From 3ecc1f883cb7731bc7dbb0c9cc0b46c7951c9b9e Mon Sep 17 00:00:00 2001 From: Eric Lofgren Date: Tue, 3 Dec 2013 14:48:55 -0500 Subject: [PATCH 01/42] Basic SAS Just an entry for SAS with the basic .sas file extension and two examples. --- lib/linguist/languages.yml | 5 +++++ samples/SAS/data.sas | 17 +++++++++++++++++ samples/SAS/proc.sas | 15 +++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 samples/SAS/data.sas create mode 100644 samples/SAS/proc.sas diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 17545309..b99844f5 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1353,6 +1353,11 @@ Rust: color: "#dea584" primary_extension: .rs +SAS: + type: programming + color: "#1E90FF" + primary_extension: .sas + SCSS: type: markup group: CSS diff --git a/samples/SAS/data.sas b/samples/SAS/data.sas new file mode 100644 index 00000000..e4e9bb07 --- /dev/null +++ b/samples/SAS/data.sas @@ -0,0 +1,17 @@ +/* Example DATA step code for linguist */ + +libname source 'C:\path\to\file' + +data work.working_copy; + set source.original_file.sas7bdat; +run; + +data work.working_copy; + set work.working_copy; + if Purge = 1 then delete; +run; + +data work.working_copy; + set work.working_copy; + if ImportantVariable = . then MissingFlag = 1; +run; \ No newline at end of file diff --git a/samples/SAS/proc.sas b/samples/SAS/proc.sas new file mode 100644 index 00000000..80cc1676 --- /dev/null +++ b/samples/SAS/proc.sas @@ -0,0 +1,15 @@ +/* PROC examples for Linguist */ + +proc surveyselect data=work.data out=work.boot method=urs reps=20000 seed=2156 sampsize=28 outhits; + samplingunit Site; +run; + +PROC MI data=work.boot out=work.bootmi nimpute=30 seed=5686 round = 1; + By Replicate; + VAR Variable1 Variable2; +run; + +proc logistic data=work.bootmi descending; + By Replicate _Imputation_; + model Outcome = Variable1 Variable2 / risklimits; +run; \ No newline at end of file From 89795ebd1facab3f37cda30248e3fec6b7eed288 Mon Sep 17 00:00:00 2001 From: elofgren Date: Thu, 5 Dec 2013 17:33:20 -0500 Subject: [PATCH 02/42] bundle fix Lets see if this fixes the failing tests --- lib/linguist/samples.json | 58 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index ac4fabfd..361099da 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -323,6 +323,9 @@ "Rust": [ ".rs" ], + "SAS": [ + ".sas" + ], "Sass": [ ".sass", ".scss" @@ -477,8 +480,8 @@ ".gemrc" ] }, - "tokens_total": 423589, - "languages_total": 488, + "tokens_total": 423682, + "languages_total": 490, "tokens": { "ABAP": { "*/**": 1, @@ -38793,6 +38796,53 @@ "running_threads2": 2, "port2.recv": 1 }, + "SAS": { + "libname": 1, + "source": 1, + "data": 6, + "work.working_copy": 5, + ";": 22, + "set": 3, + "source.original_file.sas7bdat": 1, + "run": 6, + "if": 2, + "Purge": 1, + "then": 2, + "delete": 1, + "ImportantVariable": 1, + ".": 1, + "MissingFlag": 1, + "proc": 2, + "surveyselect": 1, + "work.data": 1, + "out": 2, + "work.boot": 2, + "method": 1, + "urs": 1, + "reps": 1, + "seed": 2, + "sampsize": 1, + "outhits": 1, + "samplingunit": 1, + "Site": 1, + "PROC": 1, + "MI": 1, + "work.bootmi": 2, + "nimpute": 1, + "round": 1, + "By": 2, + "Replicate": 2, + "VAR": 1, + "Variable1": 2, + "Variable2": 2, + "logistic": 1, + "descending": 1, + "_Imputation_": 1, + "model": 1, + "Outcome": 1, + "/": 1, + "risklimits": 1 + }, "Sass": { "blue": 7, "#3bbfce": 2, @@ -43457,6 +43507,7 @@ "RobotFramework": 483, "Ruby": 3862, "Rust": 3566, + "SAS": 93, "Sass": 56, "Scala": 420, "Scaml": 4, @@ -43583,6 +43634,7 @@ "RobotFramework": 3, "Ruby": 17, "Rust": 1, + "SAS": 2, "Sass": 2, "Scala": 3, "Scaml": 1, @@ -43614,5 +43666,5 @@ "Xtend": 2, "YAML": 1 }, - "md5": "8a3ac1f1219fa2ba31eb0e5d6a22ee58" + "md5": "90558028ff3acc7def2df99638aba7fc" } \ No newline at end of file From dc1b0e3c48af0619ed94cf2b9aeaa2e35816708c Mon Sep 17 00:00:00 2001 From: Brett Weir Date: Thu, 13 Mar 2014 14:49:11 -0700 Subject: [PATCH 03/42] Added Propeller Spin language to languages.yml --- lib/linguist/languages.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 01f4b4cd..f0203b39 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1366,6 +1366,12 @@ Prolog: - .ecl - .pl +Propeller Spin: + type: programming + lexer: Text only + color: "#2b446d" + primary_extension: .spin + Protocol Buffer: type: markup aliases: From d8f96441dad832f849c2982cc6d74d89d437d177 Mon Sep 17 00:00:00 2001 From: NN Date: Thu, 1 May 2014 10:06:15 +0300 Subject: [PATCH 04/42] Add more extensions based on XML --- lib/linguist/languages.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 70302378..788ce7a8 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2047,15 +2047,19 @@ XML: - .ccxml - .clixml - .cproject + - .csproj - .dita - .ditamap - .ditaval + - .filters + - .fsproj - .glade - .grxml - .jelly - .kml - .launch - .mxml + - .nproj - .osm - .plist - .pluginspec @@ -2067,6 +2071,7 @@ XML: - .scxml - .srdf - .svg + - .targets - .tmCommand - .tmLanguage - .tmPreferences @@ -2075,6 +2080,8 @@ XML: - .tml - .ui - .urdf + - .vbproj + - .vcxproj - .vxml - .wsdl - .wxi From 86a97610bdd945544184397ea8c57a2f6a9a0d2c Mon Sep 17 00:00:00 2001 From: Brett Weir Date: Sun, 4 May 2014 07:32:35 -0700 Subject: [PATCH 05/42] Added sample Spin code objects to samples/Propeller Spin/ --- samples/Propeller Spin/4x4 Keypad Reader.spin | Bin 0 -> 10518 bytes samples/Propeller Spin/Debug_Lcd.spin | Bin 0 -> 9872 bytes samples/Propeller Spin/Graphics.spin | Bin 0 -> 125626 bytes samples/Propeller Spin/Inductor.spin | Bin 0 -> 18630 bytes samples/Propeller Spin/Keyboard.spin | Bin 0 -> 57812 bytes samples/Propeller Spin/TV.spin | Bin 0 -> 63654 bytes samples/Propeller Spin/TV_Terminal.spin | Bin 0 -> 15960 bytes samples/Propeller Spin/TV_Text.spin | Bin 0 -> 16444 bytes samples/Propeller Spin/VGA.spin | Bin 0 -> 49574 bytes samples/Propeller Spin/VocalTract.spin | Bin 0 -> 91824 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 samples/Propeller Spin/4x4 Keypad Reader.spin create mode 100644 samples/Propeller Spin/Debug_Lcd.spin create mode 100644 samples/Propeller Spin/Graphics.spin create mode 100644 samples/Propeller Spin/Inductor.spin create mode 100644 samples/Propeller Spin/Keyboard.spin create mode 100644 samples/Propeller Spin/TV.spin create mode 100644 samples/Propeller Spin/TV_Terminal.spin create mode 100644 samples/Propeller Spin/TV_Text.spin create mode 100644 samples/Propeller Spin/VGA.spin create mode 100644 samples/Propeller Spin/VocalTract.spin diff --git a/samples/Propeller Spin/4x4 Keypad Reader.spin b/samples/Propeller Spin/4x4 Keypad Reader.spin new file mode 100644 index 0000000000000000000000000000000000000000..f037d05dab37d94c2b133d2aa22e0e256c5b49ff GIT binary patch literal 10518 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 literal 0 HcmV?d00001 diff --git a/samples/Propeller Spin/Graphics.spin b/samples/Propeller Spin/Graphics.spin new file mode 100644 index 0000000000000000000000000000000000000000..dbe7e03690d8cd68e0a42704796eb19aeefe7e18 GIT binary patch literal 125626 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 E0X>cWMgRZ+ literal 0 HcmV?d00001 diff --git a/samples/Propeller Spin/Inductor.spin b/samples/Propeller Spin/Inductor.spin new file mode 100644 index 0000000000000000000000000000000000000000..9db05f622737e3b3e32b2e9e53af39aa0d379d6e GIT binary patch literal 18630 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 literal 0 HcmV?d00001 diff --git a/samples/Propeller Spin/Keyboard.spin b/samples/Propeller Spin/Keyboard.spin new file mode 100644 index 0000000000000000000000000000000000000000..d8c197ed9a34a162cd4a3bd31e72f621d4680574 GIT binary patch literal 57812 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 literal 0 HcmV?d00001 diff --git a/samples/Propeller Spin/VocalTract.spin b/samples/Propeller Spin/VocalTract.spin new file mode 100644 index 0000000000000000000000000000000000000000..71e26befa3c37d60c8a7cbea6e376ec30f7ba17f GIT binary patch literal 91824 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 literal 0 HcmV?d00001 From 15c05c723ed02d0c52e5e15c03438c321ee226f9 Mon Sep 17 00:00:00 2001 From: Brett Weir Date: Sun, 4 May 2014 19:05:53 -0700 Subject: [PATCH 06/42] Converted spin samples from UTF16LE to UTF8 character encoding. --- samples/Propeller Spin/4x4 Keypad Reader.spin | Bin 10518 -> 6259 bytes samples/Propeller Spin/Debug_Lcd.spin | Bin 9872 -> 5754 bytes samples/Propeller Spin/Graphics.spin | Bin 125626 -> 63658 bytes samples/Propeller Spin/Inductor.spin | Bin 18630 -> 10251 bytes samples/Propeller Spin/Keyboard.spin | Bin 57812 -> 29724 bytes samples/Propeller Spin/TV.spin | Bin 63654 -> 32645 bytes samples/Propeller Spin/TV_Terminal.spin | Bin 15960 -> 8798 bytes samples/Propeller Spin/TV_Text.spin | Bin 16444 -> 9040 bytes samples/Propeller Spin/VGA.spin | Bin 49574 -> 25605 bytes samples/Propeller Spin/VocalTract.spin | Bin 91824 -> 49823 bytes 10 files changed, 0 insertions(+), 0 deletions(-) diff --git a/samples/Propeller Spin/4x4 Keypad Reader.spin b/samples/Propeller Spin/4x4 Keypad Reader.spin index f037d05dab37d94c2b133d2aa22e0e256c5b49ff..c822bd042c494f123c389ef122191736d7e804c2 100644 GIT binary patch literal 6259 zcmeHL&5qkf621%2I~24B*#DR!fiB-9 zg#<0sZMUvy%PP-g3=^@P8;emaBc-jFtExM{s1Ii7ISuv6FKB8H<%zNRA^!TtPon1qZC8jo9Le zl?s`$uV^KaVq#iir(p!K4i~BXOveo}j)Z%Y2)ote4Ok>asq(@ieAPP@p9Ub?IfHy` zZsV~SffAM27V})KSa`cthYTWxv0&$Qnc1Z@LBfHDp-);Z7I5>5W7Fg_9a&5t%N5Yg zl*l=Ao)0v}ky2-@2h?PmzKG6toZYsch+PcQXHUGr}?z-29zd!hQPPjPkUfThO7WPt1brkYvR8=+)hMn!mr*JhcBo;{jaIn9i&nq4^gmd)G0i`=~zd9E&iKtUeLkqRl3t0+^?0pP~XN@%r9E5~uFplAfngs67%GqN>hZ9_Ux7X`E|Nh6@UZXCbDyUs1 zdtAOCt2NO!!rhwkf>LMveeE~D?0;|r4?bgr^(K4WCcQ-q^Z6fq_FBQR z^V|o$gibJ?l7B=eQ|FMzZb+jfLWOxx|N7t7<1*$GejG!;{Xbm3oCW@&ORx#96q2Gq zd%$Uh`zX{8i(F(S_q+2Pw-D%QOa?{5;hr1q06IJ{s9A|Lq04-<8EbUf+LCY26P9UmQD0K8)1IG@>kcPom90fh%UZFFsxjT=wz*wS>LN?;LW=i*) zIB2=~;ns@V8w*5HTIsfv+fklQlT}hnV|LxSa5u&G8kWXv)i5-Q6`Jt*) z)htblrNxO5QqUn{5Pf)Rwu}W^#9txz783Ow48YxO-F`MeH4O`d$pEFcoQAMjn*M92 zR8uv>fOE9=kPMT7wZ2J#V0|Tn5!Pj{xb35%I%Ajg#QBYQ~ooWrE;ZtK9U* zx185&P<$C1G*TNB;ju$g|0q1Q1BcuxO#=V5J9LKBv8VX%Saj-!$0&*j6oKu9Z#dE0 z-Wz)5dP9qxZzq8>MfMNK9ZyECgE7||j82BG_mcYH^L(5KE=~n38v4WncfSTjy|(M< zV`S_EgJX!Y`|ijM-&l0yh8_z!f)tx3b`ZLQlaU?Jd*zrPC zHy*~wd5sU69`l_c%eGITPM`rdFd7sCfAS{4Jzhx1{%GicsP6!}-5)tdG_)R!Yq__8Ers5Rt+>+jrR1|(L<1L<8KhUzQ;xz_+A*`(}Ed-aL0P;P907d4GKGOr);~U zz=t5VJb2l>9;@T%$~ M)W^NTdwuWnABLZ?egFUf literal 10518 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 RJVZZT1pfB?*$+Pu{Riuh0_p$& literal 9872 zcmd^_&u?4D5yuxf7A??24?W~S2sNyvk>a>OkhbVSk|kTMWC{8ax2Hm)NQ#Xt3Z!hy z4f3zI{eJe#;qD_TN~xXrU=Y-MZ{P0BcfK<_JG<0>|MM_COrO8!&#%%iBo(fIOlT_<(*X{BAY4mGl$`?iF#DR)CsuF_le=?n9@dbZNCaDS%jtZMIPTuS zXKW~kfEy&2n)P@wF!%LzB}+PrIlnv2@<+1hU6F&imKm`F*D!Ud{1EYFtMCLq3zoU= zD{9x(kN(8dvhZ?GRytMmyb>?mldmp?eUvi|_6^c^djEDJjhxy_+haK;E*V2amiZT~ zHDekyma&qfZm1F0(m#|$Bw*DmwSkpP>Fm}LUSgbFN`JICH#O10b|A(-f6=p}Xf<1Q zf7|D=N1nXQh?t3;DNeSg-hwZpyE&_Ec~>@&jcxV0?ywRK1bY-t@wXU(a1cV#z?+|A67$9;sY}1O2%4nft;LD&yjgZ@6uYccqW-}_&WQa2)zp( z^ROqh#^Uj03L?5Wrx#)K++USFv-+t9?CX#ae7bkHftUIHMwrgT*16D^k&b}EE)lsH zePO{lh5pRYwotC*J3NTxXeCl_^3zI%!0oJkXLI8_ywhZ0u}x;gmet%edAXV4(5_cGjG&Wc%Ba8y=sI#ySf+*ELzi3q(&(TBrcX?!l&6tNn=|7*SjD zdsVn$32a2>n9uB8tke;M)ZmoNaM##CG0msvu_eGIF!<(~PgqU_?_LFNK@=ezFACVJhAq>z(`PF9@36 zxzE_JcOLfJytAAh;`_zihHoM-agF=h+P3EDXfkhY&4$`KiYiw{3^Zpo&~!G-a)*k%rtR z^ShF@2u&b}QMI;O;yiA8l8sF_ia_?m1K}i!qi!wnW8UtYT9Ie#6)HZWie2%%$nhxTnoF#Eq%XUIW|VP? z(9M209ozYx`nWYXDKglR-d_eYcUA_cHuGe}j>bGLLh*+mA))N0KvHJL?JOH}{0(o0 zf5^GiOBb5K#4+nJYdmKx(-FKO9;tY#bIA+N*kv^Pe55%CVK@H%v-f*M&C`XSy!R`ao3&u5PrXyGx%>Y)3Ey$8 zS?1KBt+Rn0`P?Uzi{p4xte(g+Vuy7o_W8u1*D6Ov-KQC;vFe3pV%?g-Rr7u#e!9{V znT;8Ap;_Ux4p4iZ;I~1Jd;A=+RPz?P?zZy#^!-G_FCVC^_-H@BegKo7Jg6h*r@KE& zo9RHOwukcWUfR;%W8H7&)nQlXR7YyTd+bb^*F@h>|M|JBpS1+;KmBN9k6HJ-as2Je z*FF;>zs8xlcggI^$hMg1j&iYti zSRK7WdY8+}%5OR$lQq?77}?dBHyVZBQrVvfId9n&vuedz5-prTdzJS2fVDd!h(FIl zRtj=1>lj%V%Q+EWlomn;tb=9e6z>yEErvXMtoSQ9E$f9K1}| z7UX447hMm9&q6ygo$;~8K5&(T{NR`SV8I+X%Tt@Y%{Ic@P?GFR&MRHFj$|dHy%O05 zel>)5+DDU~C7aOheb|>`lv;osL*)>N`g#Vh*Y~hxn#m$3EOS(ujb@A$>)!}5b{VL#&2fPC$RIY2^J1=ZCL*T0dwJV{~j8?_>kA& z;6q~g(7J3|m!A@^e-uAKK&d^#=z>>6xk|e&?iWI@13u ztf`KoWjohW`+C|--|Fd!TA!$WNj(n7@0W6xc#-R?XXnzJSP`~GT{)hUyBIB8- zzp4Lo$s*TnroU^)hQ`Azbx-%`-c{?4uIQv6BR14>tY_|@s%?F&@44i=zGED@((FJsn8%v#~X6(z>0IVHwD_vc~6m6yvru5*ya^-Phj(A=s9L zV~yg8)?;1w)sG65p0Lr<-#vY?ZcFcN<)$p!RLfERp9|XD59YodzrlOp+tH`kyO!C( zD+d*`(<}rB8|t?&i_rU2(%_S^J3?h;2uOB^s4=8y59x=@-~RyUE*&`l diff --git a/samples/Propeller Spin/Graphics.spin b/samples/Propeller Spin/Graphics.spin index dbe7e03690d8cd68e0a42704796eb19aeefe7e18..2629501781c8c618a9f2958a9bc447ff9df0bce2 100644 GIT binary patch literal 63658 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 E0X>cWMgRZ+ diff --git a/samples/Propeller Spin/Inductor.spin b/samples/Propeller Spin/Inductor.spin index 9db05f622737e3b3e32b2e9e53af39aa0d379d6e..611a75fcd64c56e07305af7c8c8f5f09e7d7480f 100644 GIT binary patch literal 10251 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 literal 18630 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 diff --git a/samples/Propeller Spin/Keyboard.spin b/samples/Propeller Spin/Keyboard.spin index d8c197ed9a34a162cd4a3bd31e72f621d4680574..bb38d0abcd9f586e525f3224d693084255de0c1c 100644 GIT binary patch literal 29724 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%0DB1Uy64iqC(d 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 JzxSs<{XfZD4EO*5 literal 63654 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 literal 15960 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 literal 16444 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 ANdN!< literal 49574 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 diff --git a/samples/Propeller Spin/VocalTract.spin b/samples/Propeller Spin/VocalTract.spin index 71e26befa3c37d60c8a7cbea6e376ec30f7ba17f..c70a75b93128d0d5f67b60752984fc1f2446fc67 100644 GIT binary patch literal 49823 zcmeHwOK%*j#Vju7p5@(KVD4%zaDn+L{sZSP%=bk;DyzDxx(&JI6 z+T)%IMjaK*)F2F^nR;ATuU`DHnyP}soVtJgmk#sMX_%~61mZ`t>3A>*JL;?-s76ag z{ZVfauAE%VLN!4{8HTfP8maTse*07n=cpel-tUA8TmjcuCLGNSD>sw1ahQ|0Z{W&d z{$}eCRsnShf?5y%CbcvCo7TFGTDMv2wrbtA+9;@vy0val>vl<6#h1Ouf^uX#%;kz- zVX51TIS8(>nh8+(buQgC|0x0RN-m11`bBNMdA)bIb+mV|uUrrF*I)kqw_mTAk|HX8 zE!V018SDTUVM^Ebz1^l^QnzJK*7V7Uavn(|GEcI8^66SA{nuaq755fINk(1u&7Unt zmPnyI^$&jg^?zxgBHh2J-3F*OLkfGVxp=F!cx!Fp*8bL;t(U301(YwLx<|qFCc^)} z{_;PCy(tyZs&KV8f3`gL^-PFJ|0$$@K@}WaeWKMxYjGNI@wL{!oH9#j`bB;H^5E!b zK}xLa2ObGcQU`C3UcWs`gIGdMN^q$$`3KO{rK;$TQYoz~X;RE}Aw^QA@byKg%j8^A z+Dqs(^6%3#cTt zC6r>8w)YG@+5rnDuwTi=670qGTT-*j5LighWdN3b=hk3e(9V=T>C2Rn$t<(n;Dh<7KeKmuJsQt2@hpAt6?5R!pLM&T zNYb#Rs{a29pQZ}uU6uz@zGNP*E5HAjT>c4X&D@534x&ka8i)vk;bhRC%`r{pgZk=f zbA4UI;q?jJ3A0no#Rv0YxQQwE08{AI)xmh)si{GK6b6aThp*(xP@c%}O^?)jgYj$z zk6BCr-pr!mY}{|t9Z-%00Z~kY9z7D3rD4*a!DkS^r5X>{9;sX(eB=Rf`r zC~sQAqjPvjG=jKl$%Z9DF#`yn5Kt4EcdStAk2YEgH8m7#p%}VZd{eD+iXd!R(*+#_ zIU#&=;535{GjC(L?sy8{)~unr^k9Xf_66SLgT|B9bwh@})^48h2<)52rNI;@qeqV$ z338Uxp{I==9nBbW4joPS)!=Sgq+@-S zWDuT(gH1K=c2`%&qeT<8lo!Tlz;c=fUqN$pBSnLIgO5$2du5xz@ z!;`Y*(l*k@9G+3M>e09#l`^NxY0&-?mWyd{wbR74o~&XWLn|8#`ZTzrn`* zT1oY@H>aQ7r-ByIQ9Pvn84CZ~uc`TnzWJel%L6H2@392Py#fY(IG%=Rt@PhRX+0M=*D-K&q|oOMBJuC{##OF+ z+*eo#I345hSgPhQqaT@vQW9erEQ(+aVZ}j&24ew%{f_E}VTTRVoc(O zI`0n#YA_BuvcMu3ItG*|uI6^oMGdj^G6p>Uc2qPR;{p}#kML+R9p0*ADhb4><9w#ypU!1CzN+3%bgf;TLs?Ihx?yF6#GZu8 zkcnlH@w5XhsOU7rDx*|a%C7XnQD_E;Ku2zvm8798p@=||V#IP2%|SM1th^YkH9=w& zKo)6G+mSjCFn0hQT1J*rLW=-KAzu(`Iv;@-s6Y5&4u@ISwx$44YRr|R{s^MCl|pSI zjyj=cCqV?}VkScb1Fne~oZphFK#jt4BTg*BX}-mP7clpSL#U3{WKjx`KxvUADWI}ylCFTh#2%YRYl<%N{G4Q<|QMph8ue=zU#$4(kpm<(j058@inBPF9y zNVr-5J1$cmi4m}(Yh&#b$_yo#Ko6ihlRk8UYlEH^cEZ6dSbFu3`yw6m{lpw202Me};#vYHOr+Ux7+2!>ee1(hjE6KAsbIFo?z^z-SfJ zh_Ia&_DAgjrUXCW0L;_fS#{%uDIt+Wz3n-^F_F!~jtB6{J zwU}3EQo-OnxUf@fhdG*I(gsDeh{cG2{KxtcWcQ-YF1JUb3lA*<=pekV9-A8V}z*2u%|rUp=2#@s|xVE|+^O?h8?(`$+GtLktfL5j2 zgK-3luT`$nZB$k&-L;C?F3{eeO8>z26ES85HLCO`715X;9R$*kbqAcM=?+%+R;-t> zz-y4Ac&6zF6Sy9rrzas=4w#M}j}^!CwT)`5s_({gy^i1E%07A_0-uiOy;BvwpMYKL zjC8X;r#_R-0|)~QK-E{(Gc#$_8aA1Ocr4G^CA_w^?xvpR9oab*;`b70tqls1Ou< z0@}kVZK1r7$pgRpDsKutZL>FPn=(JR^sxHBUtHvX370wy&-&8&z34}9%&;MT?17lN zI_(f5m!Qbajm$8(Qp2H-r6l>jGpai152IiL5Fv8`e(F4TDlGdl>o==xzx1-%}Q zVw9r$C-g=&YxYMf3T0qL+zH?+g;^tGTp5c-vtTL%b6$+X_ijwRi}8^ejB|9SS%FvB zr=qu}mM zq34D7nc-w4n?t|83=oA6k@EXy*2C+<3b-w?dhOF-)C(~%c!vQl-}QCjBs`^0S?0Cq za-;qUI?sh#_$E~_Yn&hd_tRS4GTxd+lk(qpmU6&3cnUS-?w!KNH~jGKou7WXVUz{v z?%vr(l-q4NZkwbKM??46@yWc~WsL1p^|%zPD%vpH*Q!m#(Tv2YTk7?kLbsMXh~6b{ zTIxr-0%RPGnc+|B0mGH$UJ$IVcDqLJD~%0__>B}MGsex7Q{~dP$r~-J!FbdoHAZqm z+e4+7a{ZS`G5|`(#v5wqqCRJL- z7VF2WtE;k9l3lpuUGj!TMbY0K9M|}Bf}b{Irhjt=kHz@?Asa;nfgu+$LEw$dDSNVFkp0TiySGnomXds91@7K?{gzHaOzNxB zypJcdDVq2=I>w4i4Kw_nKIsmR5my19!F`1Yi+6BVT*GnOBvq-XH{$Q`C;41H!ia7~ zbB(EbOuf7I!5*9i{edk1Tss{aflzZpxR#?a)Hnsk zz*syz5EFdjzVKW~K%}Y|w#yjtqo*t>0v&HmD-vqxfP!miVaXD$OjTDJq!a5l6yX(< zVsIv~U(bZpoRA20?>-@|0*L^^=Zd?wL`m!HUxHyB>o zuJB8Cd!O#ml9HL-?;S~Bs&)0Zs__T)$EWI#zjLHsKb4vqGW(bo=kvy6biC|)A2=fZ zR(;;uy?#oFK~uw_u%4=@Pbw=-jhTi2-jS4&mA!x69J17CSv`QP>T6C`RZE2k>%RKk z@6?lPCCE~9tw>4(Cp8tU=VPR4Mxa=!##(nDV_auW0x>5OEYUMQPvUYhOh3cEBiNZ_ z1s?ut$cdO4xpztpIx{IGHPGRBTzm_(SbRs)!t3k0iD#02?Kf|s-W*CFM0c8w#Sk@# zHR;+};t-HG({O??J=L*PvAz}!wWQ#8tpC?4>9F6 z?jhr)`W51;rw9c6%3H9y&nSik5LbAE)ZCuqwo#+kU~Y%6?Y8ko)?mOIzeTwv81&?b z@wlNCm|JOYFoOvOdcK0Rxe;RdvG`24tm#&rK2l4vHt6}&cL{)F%(J~&1{uS2Fh)I+t% zSmCRs1Dh~UL&<PXEw;Dx5(mQ#F*W4R9>tZNwZqKTu`VJ@&b4MCvWM0XBX z5_Z}_V%t12`g3U3^k-9KF~fo~slc(;TId{xw@iUbH;h|8gU8n)j_?parT)*F9@ z^hG8>NEQOv$i(aWnCoeoGIT%-Df)dZO-)!hoWNynDN}z`{STu~-d`ZEgH*OQ(zAQW zSwx;%I$eUbLgR~0MeQ_^;>zfQ%<)jwxhkH?+{o~iCYKX@#xJ8%Xd+q!I>d+&d6;4F zj}kTUlgA9QoR|3D*euB$m*ulfg+;V96Cj$P(?Qyt&eg{yF`0}^vsBZ03^=^2;S@Mdo@&H4Xh=>Evilu%=gXmyi1$NUq<> zAQn%Mrb)iDUk=}g?YW2}Es0>z8>1PX4mELHLPp3%orhazmRFprHI+-77%}M+nPkVg4 zNkf@w&DP3#iTl6m!FILy&l6ISJ1 zI>QPsk)SObi%4!B`8%D%l#WMbWs2ygg~O9+3k`hQ>9=zv+NQV`-j9{0S-Y2&B$6r7 z&33VRXhMvFco+F>bh;prMHli5JNbZSO-g=QCw2|^-sAkDmIgy`=RK6GeCdl1DIF9R zcJ-tF<;YDWnNOWnOH-Ex#Z0KB3}i21%uG(ky(pFs)z&frRntiU=uyN!f7}KF@i^rh@8dBq$8__3{76L)jbyx1 zQ8LrxpiL68^)S&a5J+-3HbK!F>DUqE-8%!JBj%$$x_Y#q zl&3vgYmAVL8k))16ti{c5&y`5vJ~O>8ebF`^Yf|h9H?p9G<@rAwTMlG;A|?=Haq+r zbfamFe~xF|%0Qi)0cQp757`Tg&oH5aOItibMaH!~5N#EZMZ=DK-1&@|-Y9UI+AX(X zaSt*j9{o19_?m-0>9Y?JI)7qcKso9vjJPn=~8 z22UDqeo-exd{?TVy7>S+J7+#nlA<}94^ul%S0CKh-poXGRQ18b6>*VN)YoR0?8zKa zWJS`9JTWwrh~=uHgVN|ug9 zflt2CGNwqZI11$L@ z?CeT5QheZLg?t7F3VK2-39l#gzK_T`1T;a`RWjhqEh`ZCUy|-a^8!3??2RwV2o)dd z^CsUh#)=`Nfn_;#3X-2N#)?m%f4T}AEd4=rE~V#VlEk=?Tu9sx}zH_^Z7JVaT&eUJ6~_d3_ut?y>N7B5Bd z`=?nYDyfe#^y|;@U{lT+t&U*>E?XyZ-FCm0!#% zXV(nU3Y_>p#DZcO5cAP{b+sQQOjH+prP=RzxDjYRG&dEX>oC9Ar77et>gmIy@WXUo zb3C6)r}!T`_0G{*f8a>ne1QQM9GMabQly^W5A^~kmR1;>{P;wceR)w3T(5P%4+ zA#`k!g0~n?g8?gD=|uD~s|J74FC(a7m$59S64Q@fDflzV%B!LFYbv!VK7ChlcT%w_ z?5JeC)vINJ!UnboCK0~{aOA)MmxaHip>}U^)uB?|;4b}*N2}{fJkU|WY~8jp9puBE zYLc$uio`?7>O@R$zGk}iBikPm+`Y$NcmoApe*|M8eqh*-+Tmajj6&{iTP|=TCR3m3 z@G%VBgs)T`*?5N`I#M8?QoEYQRrzCnAs$Nw+_KT;`OB)DL|EWiJ{V3#c*I~%>-AkZ z;E(=6Rr-1dn~XMy4Va`#}sx)&IyREB{HXZP}J5#}6m6xOpVvg;XW2wv17Z<`{C}(;E1S2nJ3(!2nMJ((-Ayk`zRErRFedaw=van;OeU zF<59y#=%MzVw0eUO?Wmiph#&A%#ltXKr>+=hLehp2`74lX#%g+_6+=T3zZV3>yT(y{d|yCdY*zWwGVVEWgI2! z13rl;_Fz0tUJdoMfhFNV@eq#))k$ z$4C=P2u3E>7~BFdn;kK(SOYG*gy}UK#tCyxI}x3jubY^^NlD_$a!z7@#dl^GG8LSl zx1ZB3iDi>EI%Rb4kZHmA%PtL{MePAPMJpBz9q=|%Th^!TLW7J4*?K)0Ajj)R*aXTBoGG;;wy=3_ek)0z$Nkr-sm z6_<9P&57;uNViZSy$tj$quJ0SqK8e?VggS|szO^~!o#&~%SUX=D^=1Nv%>kX6@zD($rxJ|Occ#W`dsBP^3bA!800Ni zR!)|i=QYk-&^bPihi^#`@s(BXO)?yVSN_CfSHBzPlh{HR47DssufoMWQA|zpjP{#I z7mwvEXr+g*Qolt=RzIlrG<4D*cvvgRYL`)ZVPtxwsy<%nGZo3>Po^R*)>z+JUJ+LO zIBOW_Mw7;!A=a)yA8fdf191zi-XcTQ>uif(~i|6n0gdo3`cG8^%O>c;-t1C$|mgw|vKKNKXA3hJ#)8aHP7v-O5 zsouy9(-W7DpzN2&GN#xIfQ^~)t)3}kS)M>i$(!eyDCN1c}3wpKhY(3mC6BkatU`gTNU`e;`v2H(iY|oJUo(tqN<-GOHz_0S64sZ-QC$@)})NqYzaq+ zIkCMDMm?Eh&3v78{%wqxu!+{ffd*zi*wko9ew?jG36OM|Z#+P#QSyjEt_eh+ZTV1b z+eH=ODZ>HA_;6+RGLwy$^(JEZpzO@uf_e^UIiUF6+I&FM4!%)|Su@$5t|b9h;ADL_ zpU^gn>=6)VB$y8~MVzQXf;hBz2GStEOun8B-OC5&#@ji1QNgDg@s%==i1B+;4tMVu zQf)$%BLePY+o0cIMFB~YdO0Dlq2Lq3I>S=O8dZ_R#%3dph9-+G!U5MOraAP`oVYji zLUH{@q5-i0OH)lr!R^upDf`Fq}4gn=};8T?yWU6Biu|KZanOnYm({SskqrkNR z&GP*<*3ZFhTDabnOA`_QbyL?oy@vZZNiCq#;>n8TXVJo=(*t0AlVpQ((jjF zGLto?IeF$OzBf6J%NWI%Z}b^&oAw(^gGLvK72JZ+-O`3nKb~fh0F+gDsYE`>b~2i4 zOu%#}MQDfPH!kl%wG>(mKf?;Y!Ux|G(_srEt78UcpT%B*?s$Mt%ti<`rLCx_ zS0*lWv8`uAy6jyIf1$H>HpsXw_;KmdhRB#N`zk*6+QG|@N}DB+S6A(@=ph2AomnvO2bcc9~z+4U$=TooOm{wSOud z#7P@vv6C#qbH!~z^Xsa_(T4ZTx%3jikko-4J75*zQa4G}=KI}@Hk>jAy86Dcj()*{ zDsV?-_W7ihO1Q0adZ!FGlw9GA?h)H1J=I$){O(B|v9CQQoJd!qs{fSL?^&YsFG3jc zzL8XWOoSt>eCW|PXwYrJ>m|(#y3?i>3w6?g%N7V83|2x%CMI$6%Cek!wu?_`Qmp)R zl%);@N1xZ=|J+k%qyDJ5jx8eUt4|)UW$gqM^FNKi4R!M}#$a-|Mq-G^lJ^RS0o?h5 zHI4@OCNy$f5m>=n_Q=O)D@)&dE5DeXHR*U*3pV}h6Q2*uM_D5Lycp$jG{p(f9?9O? zaJphX$tAdSfoV!UVIPjN1eY|*Qb@C7x?q>|x|Go@PI>deS%(UmTz(;|G{x+&pn{r9 z>l60VX`T<;*;!4lwzLo8_DVYo$dSb0Bgs^oEAjBCYV;1DpVzhZ91JpAwq`*9Ce*-+ zEvO}fnw%x}aFnyd+?XhV!n?58&@MASfaK`xq{Zp$YRr!qG zPh$DHq)4DkTdmh${D2M7l*yi{BJ}}#iD8Qt_B$sGM$l_*nW2|}X>n$00!gf(_rh*6 zsvCx#lc4<$<3rBcv4a9W`i_AtbyGq&F|ZjifmOyE#Afna3B(;18|T9toQTF<{jpxl zb46p)K3{wG1heNyX%7*yW@PIUJ!p~FF@iFd1KY{iJmi8F*b~Z}!6soYk+bUO7h38~wWD}~CD(%7wI zdo(u>w8bjgq0i7z^Nb(4(WVz0%wbzRZuO<`DKrTooljVAPQ5PG;pxppuKVwwG<}G1 zev5q+y^gi2x1OXs*ag0c5HLXO@OyYywaRjRHI(k%N|BQAw(_ttm0y&R-`s9DOWekN zpoNYhKvL}7sztWgNg(33hXxf!T6XuG{30Zo5o0z;IWFnJ(M4?3aX}FvjGxMx2j%V^ zj%OvNCclsr!2)=ygkP)lqh;53@91p;7R!0WW#;MP4X=pKcqoJdZf0h1CgC*FLv#(( zN0ph=n1s??4katgFIA`3awu78ZYd~hOQB>ZFC}V(RiH)Y${mk0=?Rv7!z+?aOA1xy z(q*z%nJ%|vk-K;7%C)7V>~H0ZFTPMV@GoA>1`l$W;3}AdA!i?y-etkrjC7Y3Wbod- zlerNFo-U=(f;9VkWNrdd22OHgjhG*3=-QVZ-!f-QNwXj&n%jGw4cfc(PM3njOo@5v z4Xnu8Pn^o@0GYLZi)Up)He-+g*7At*PRjyoC4gl`E`9)IYd)~d{K_)Gbl#^^yt{X@ z^FvE8Y$1cRd)ej?C-Ql8W#;^qsbLJwDF;UnG$vlajgzL6Wsa=Hn8=I1B_T9+rw)uc zDFw{|%3K%GBMb-FLgZ%UnM*xp{o_Jm%Rc>aHRrY`g^@acC@cN4@FHhiid~2X078pO z53|J~u(+^e3q2-1E$&0?NR<=2A*x4@@hv2%F>WZ(lYHHR7aD&2k&?T`y;&Ugb!L%1*lg%*}`YyQVW`q~U zCo^n8D64;%!cOqDT5iG)FwwX>JLhhtTor^Z9Jl*))FJ{GX=D6k1ziu+1nQ8Gfsb%- zd6*lvfA+?_{n>p%*ujqSm@or!sO%$28o}Z#&EpIy=Y+>Bwf0~xfm__PosS3oVc%fm z>r<{zieCY-QT)=!1RsdfWC#`b`XwSYYS>FmYCD;q46to~jUT=QmJ=kAa0d%8+ef8Avgl6A};-HcV7XrvLaOUqP7a4+ij6E+&ly@%P9r z;T_gR2Z50J@Y!|n{sH=fJ@g6ydUT+O&>fZv z1AA{rx{+5qhubfJYU|nF%e|xTYHD}yXrD-Sfn`g*-a0(m+kX3U>rlOZd-(d`%?{{! z4m|sN`@4rgyYp&i|7aCt;GWv~1{dnhi>;S01^3olROe6#wq#f;whvx^cewZUizD^o z;N|lj6neG;(zl+y+|j5}>+P3Yd#`Hh`PQqguSxBpIzWvMrI?}i+ZQ`>3;4J2Z~JKP zV4qCeKG;7x#AOX^I6QK%e!KT(hX%t^v30ojhP>N7JOCnc9`BO9`-HH+qv261QXeNg t6d`ZX2RqQ}`Oel$z=9$cGhhv-i~{U?eT`?3H4 literal 91824 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 From 8118546ac7af269c5147749654e1e952f64ae616 Mon Sep 17 00:00:00 2001 From: Brett Weir Date: Sun, 4 May 2014 21:05:19 -0700 Subject: [PATCH 07/42] Changed Propeller Spin primary_extension key to extensions and set value as array --- lib/linguist/languages.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index f0203b39..f364c9a3 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1370,7 +1370,8 @@ Propeller Spin: type: programming lexer: Text only color: "#2b446d" - primary_extension: .spin + extensions: + - .spin Protocol Buffer: type: markup From 843279ff1dca0509275c8e9886c38a13e83340fd Mon Sep 17 00:00:00 2001 From: NN Date: Mon, 5 May 2014 08:10:49 +0300 Subject: [PATCH 08/42] Add samples as requested. --- samples/XML/csproj-sample.csproj | 59 +++++++++++ samples/XML/fsproj-sample.fsproj | 76 ++++++++++++++ samples/XML/nproj-sample.nproj | 77 ++++++++++++++ samples/XML/vbproj-sample.vbproj | 115 +++++++++++++++++++++ samples/XML/vcxproj-sample.vcxproj | 104 +++++++++++++++++++ samples/XML/vcxproj-sample.vcxproj.filters | 49 +++++++++ 6 files changed, 480 insertions(+) create mode 100644 samples/XML/csproj-sample.csproj create mode 100644 samples/XML/fsproj-sample.fsproj create mode 100644 samples/XML/nproj-sample.nproj create mode 100644 samples/XML/vbproj-sample.vbproj create mode 100644 samples/XML/vcxproj-sample.vcxproj create mode 100644 samples/XML/vcxproj-sample.vcxproj.filters diff --git a/samples/XML/csproj-sample.csproj b/samples/XML/csproj-sample.csproj new file mode 100644 index 00000000..c4c4be68 --- /dev/null +++ b/samples/XML/csproj-sample.csproj @@ -0,0 +1,59 @@ + + + + + Debug + AnyCPU + {99D9BF15-2911-4D10-8079-83ABAD688E8B} + Exe + Properties + csproj_sample + csproj-sample + v4.5.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/XML/fsproj-sample.fsproj b/samples/XML/fsproj-sample.fsproj new file mode 100644 index 00000000..205dde83 --- /dev/null +++ b/samples/XML/fsproj-sample.fsproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + 2.0 + 6cfa7a11-a5cd-4301-bd7b-b210d4d51a29 + Exe + fsproj_sample + fsproj_sample + v4.5.1 + true + 4.3.1.0 + fsproj-sample + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + AnyCPU + bin\Debug\fsproj_sample.XML + true + + + pdbonly + true + true + bin\Release\ + TRACE + 3 + AnyCPU + bin\Release\fsproj_sample.XML + true + + + + + True + + + + + + + + + + + 11 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + \ No newline at end of file diff --git a/samples/XML/nproj-sample.nproj b/samples/XML/nproj-sample.nproj new file mode 100644 index 00000000..c50bcccb --- /dev/null +++ b/samples/XML/nproj-sample.nproj @@ -0,0 +1,77 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + c67af951-5808-4525-9785-d8d6376993e7 + Exe + Properties + nproj_sample + nproj_sample + v4.5.1 + 512 + true + Net-4.0 + $(ProgramFiles)\Nemerle + $(NemerleBinPathRoot)\$(NemerleVersion) + nproj-sample + + + true + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + false + true + bin\Release\ + TRACE + prompt + 4 + $(OutputPath)\$(AssemblyName).xml + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + False + $(Nemerle)\Nemerle.dll + True + + + $(Nemerle)\Nemerle.Linq.dll + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/XML/vbproj-sample.vbproj b/samples/XML/vbproj-sample.vbproj new file mode 100644 index 00000000..90422f08 --- /dev/null +++ b/samples/XML/vbproj-sample.vbproj @@ -0,0 +1,115 @@ + + + + + Debug + AnyCPU + {400D377F-6993-425A-A798-05532B3FD04C} + Exe + vbproj_sample.Module1 + vbproj_sample + vbproj-sample + 512 + Console + v4.5.1 + true + + + AnyCPU + true + full + true + true + bin\Debug\ + vbproj-sample.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + vbproj-sample.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + \ No newline at end of file diff --git a/samples/XML/vcxproj-sample.vcxproj b/samples/XML/vcxproj-sample.vcxproj new file mode 100644 index 00000000..52e7f458 --- /dev/null +++ b/samples/XML/vcxproj-sample.vcxproj @@ -0,0 +1,104 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {BF6EED48-BF18-4C54-866F-6BBF19EEDC7C} + v4.5.1 + ManagedCProj + vcxprojsample + + + + Application + true + v120 + true + Unicode + + + Application + false + v120 + true + Unicode + + + + + + + + + + + + + true + + + false + + + + Level3 + Disabled + WIN32;_DEBUG;%(PreprocessorDefinitions) + Use + + + true + + Console + + + + + Level3 + WIN32;NDEBUG;%(PreprocessorDefinitions) + Use + + + true + + Console + + + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + + \ No newline at end of file diff --git a/samples/XML/vcxproj-sample.vcxproj.filters b/samples/XML/vcxproj-sample.vcxproj.filters new file mode 100644 index 00000000..41bf7054 --- /dev/null +++ b/samples/XML/vcxproj-sample.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + \ No newline at end of file From 256157cd42a088dd268c9d4d45fd538ca2f98131 Mon Sep 17 00:00:00 2001 From: Rick Bradley Date: Mon, 5 May 2014 13:46:28 -0500 Subject: [PATCH 09/42] add release instructions to README --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index bee635e1..0e2c060c 100644 --- a/README.md +++ b/README.md @@ -134,3 +134,18 @@ Any of the extensions defined are valid but the first in this array should be th Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](http://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away. Here's our current build status, which is hopefully green: [![Build Status](https://secure.travis-ci.org/github/linguist.png?branch=master)](http://travis-ci.org/github/linguist) + +### Releasing + +If you are the current maintainer of this gem: + + 0. Bump gem version in github-linguist.gemspec. For example, [like this](https://github.com/github/linguist/commit/97908204a385940e47251af9ecb689e8f6515c48). + 0. Make a PR to github/linguist. For example, [#1075](https://github.com/github/linguist/pull/1075). + 0. Cut a gem: `gem build github-linguist.gemspec` + 0. Testing: + 0. Bump the Gemfile and Gemfile.lock versions for an app which relies on this gem + 0. Install the new gem locally + 0. Test behavior locally, branch deploy, whatever needs to happen + 0. Merge github/linguist PR + 0. Tag `vx.xx.xx` release on github/linguist; push tag + 0. Push to rubygems.org -- `gem push github-linguist-2.10.12.gem` From 3f1dc71cc2fbe33377cec3b35287f3189a09e6a6 Mon Sep 17 00:00:00 2001 From: Rick Bradley Date: Mon, 5 May 2014 13:51:36 -0500 Subject: [PATCH 10/42] improve release instructions --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e2c060c..2c076650 100644 --- a/README.md +++ b/README.md @@ -139,9 +139,13 @@ Here's our current build status, which is hopefully green: [![Build Status](http If you are the current maintainer of this gem: + 0. Create a branch for the release: `git checkout -b cut-release-vxx.xx.xx` + 0. Make sure your local dependencies are up to date: `bundle install` + 0. Ensure that samples are updated: `bundle exec rake samples` + 0. Ensure that tests are green: `bundle exec rake test` 0. Bump gem version in github-linguist.gemspec. For example, [like this](https://github.com/github/linguist/commit/97908204a385940e47251af9ecb689e8f6515c48). 0. Make a PR to github/linguist. For example, [#1075](https://github.com/github/linguist/pull/1075). - 0. Cut a gem: `gem build github-linguist.gemspec` + 0. Build a local gem: `gem build github-linguist.gemspec` 0. Testing: 0. Bump the Gemfile and Gemfile.lock versions for an app which relies on this gem 0. Install the new gem locally From 452cfd32d7fe15e4c430c354b8395c09c17af43a Mon Sep 17 00:00:00 2001 From: Rick Bradley Date: Mon, 5 May 2014 13:56:08 -0500 Subject: [PATCH 11/42] one more tweak --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c076650..9e68a909 100644 --- a/README.md +++ b/README.md @@ -151,5 +151,5 @@ If you are the current maintainer of this gem: 0. Install the new gem locally 0. Test behavior locally, branch deploy, whatever needs to happen 0. Merge github/linguist PR - 0. Tag `vx.xx.xx` release on github/linguist; push tag + 0. Tag and push: `git tag vx.xx.xx; git push --tags` 0. Push to rubygems.org -- `gem push github-linguist-2.10.12.gem` From 5da8831aff916150698b054100a3cb0fde690412 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Mon, 5 May 2014 22:11:51 -0400 Subject: [PATCH 12/42] Samples update --- lib/linguist/samples.json | 2099 ++++++++++++++++++++++++++++++++++++- 1 file changed, 2096 insertions(+), 3 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index b5f3067a..4411fd6f 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -429,6 +429,9 @@ ".pl", ".prolog" ], + "Propeller Spin": [ + ".spin" + ], "Protocol Buffer": [ ".proto" ], @@ -692,8 +695,8 @@ ".gemrc" ] }, - "tokens_total": 592428, - "languages_total": 722, + "tokens_total": 605947, + "languages_total": 732, "tokens": { "ABAP": { "*/**": 1, @@ -51092,6 +51095,2094 @@ "right": 1, "L": 2 }, + "Propeller Spin": { + "{": 26, + "*****************************************": 4, + "*": 143, + "x4": 4, + "Keypad": 1, + "Reader": 1, + "v1.0": 4, + "Author": 8, + "Beau": 2, + "Schwabe": 2, + "Copyright": 10, + "(": 356, + "c": 33, + ")": 356, + "Parallax": 10, + "See": 10, + "end": 12, + "of": 108, + "file": 9, + "for": 70, + "terms": 9, + "use.": 9, + "}": 26, + "Operation": 2, + "This": 3, + "object": 7, + "uses": 2, + "a": 72, + "capacitive": 1, + "PIN": 1, + "approach": 1, + "to": 191, + "reading": 1, + "the": 136, + "keypad.": 1, + "To": 3, + "do": 26, + "so": 11, + "ALL": 2, + "pins": 26, + "are": 18, + "made": 2, + "LOW": 2, + "and": 95, + "an": 12, + "OUTPUT": 2, + "I/O": 3, + "pins.": 1, + "Then": 1, + "set": 42, + "INPUT": 2, + "state.": 1, + "At": 1, + "this": 26, + "point": 21, + "only": 63, + "one": 4, + "pin": 18, + "is": 51, + "HIGH": 3, + "at": 26, + "time.": 2, + "If": 2, + "closed": 1, + "then": 5, + "will": 12, + "be": 46, + "read": 29, + "on": 12, + "input": 2, + "otherwise": 1, + "returned.": 1, + "The": 17, + "keypad": 4, + "decoding": 1, + "routine": 1, + "requires": 3, + "two": 6, + "subroutines": 1, + "returns": 6, + "entire": 1, + "matrix": 1, + "into": 19, + "single": 2, + "WORD": 1, + "variable": 1, + "indicating": 1, + "which": 16, + "buttons": 2, + "pressed.": 1, + "Multiple": 1, + "button": 2, + "presses": 1, + "allowed": 1, + "with": 8, + "understanding": 1, + "that": 10, + "BOX": 2, + "entries": 1, + "can": 4, + "confused.": 1, + "An": 1, + "example": 3, + "entry...": 1, + "or": 43, + "#": 97, + "etc.": 1, + "where": 2, + "any": 15, + "pressed": 3, + "evaluate": 1, + "non": 3, + "as": 8, + "being": 2, + "even": 1, + "when": 3, + "they": 2, + "not.": 1, + "There": 1, + "no": 7, + "danger": 1, + "physical": 1, + "electrical": 1, + "damage": 1, + "s": 16, + "just": 2, + "way": 1, + "sensing": 1, + "method": 2, + "happens": 1, + "work.": 1, + "Schematic": 1, + "No": 2, + "resistors": 4, + "capacitors.": 1, + "connections": 1, + "directly": 1, + "from": 21, + "Clear": 2, + "value": 51, + "ReadRow": 4, + "Shift": 3, + "left": 12, + "by": 17, + "preset": 1, + "P0": 2, + "P7": 2, + "LOWs": 1, + "dira": 3, + "[": 35, + "]": 34, + "make": 16, + "INPUTSs": 1, + "...": 5, + "now": 3, + "act": 1, + "like": 4, + "tiny": 1, + "capacitors": 1, + "outa": 2, + "n": 4, + "Pin": 1, + "OUTPUT...": 1, + "Make": 1, + ";": 2, + "charge": 10, + "+": 759, + "ina": 3, + "Pn": 1, + "remain": 1, + "discharged": 1, + "DAT": 7, + "TERMS": 9, + "OF": 49, + "USE": 19, + "MIT": 9, + "License": 9, + "Permission": 9, + "hereby": 9, + "granted": 9, + "free": 10, + "person": 9, + "obtaining": 9, + "copy": 21, + "software": 9, + "associated": 11, + "documentation": 9, + "files": 9, + "deal": 9, + "in": 53, + "Software": 28, + "without": 19, + "restriction": 9, + "including": 9, + "limitation": 9, + "rights": 9, + "use": 19, + "modify": 9, + "merge": 9, + "publish": 9, + "distribute": 9, + "sublicense": 9, + "and/or": 9, + "sell": 9, + "copies": 18, + "permit": 9, + "persons": 9, + "whom": 9, + "furnished": 9, + "subject": 9, + "following": 9, + "conditions": 9, + "above": 11, + "copyright": 9, + "notice": 18, + "permission": 9, + "shall": 9, + "included": 9, + "all": 14, + "substantial": 9, + "portions": 9, + "Software.": 9, + "THE": 59, + "SOFTWARE": 19, + "IS": 10, + "PROVIDED": 9, + "WITHOUT": 10, + "WARRANTY": 10, + "ANY": 20, + "KIND": 10, + "EXPRESS": 10, + "OR": 70, + "IMPLIED": 10, + "INCLUDING": 10, + "BUT": 10, + "NOT": 11, + "LIMITED": 10, + "TO": 10, + "WARRANTIES": 10, + "MERCHANTABILITY": 10, + "FITNESS": 10, + "FOR": 20, + "A": 21, + "PARTICULAR": 10, + "PURPOSE": 10, + "AND": 10, + "NONINFRINGEMENT.": 10, + "IN": 40, + "NO": 10, + "EVENT": 10, + "SHALL": 10, + "AUTHORS": 10, + "COPYRIGHT": 10, + "HOLDERS": 10, + "BE": 10, + "LIABLE": 10, + "CLAIM": 10, + "DAMAGES": 10, + "OTHER": 20, + "LIABILITY": 10, + "WHETHER": 10, + "AN": 10, + "ACTION": 10, + "CONTRACT": 10, + "TORT": 10, + "OTHERWISE": 10, + "ARISING": 10, + "FROM": 10, + "OUT": 10, + "CONNECTION": 10, + "WITH": 10, + "DEALINGS": 10, + "SOFTWARE.": 10, + "****************************************": 4, + "Debug_Lcd": 1, + "v1.2": 2, + "Authors": 1, + "Jon": 2, + "Williams": 2, + "Jeff": 2, + "Martin": 2, + "Inc.": 8, + "Debugging": 1, + "wrapper": 1, + "Serial_Lcd": 1, + "-": 486, + "March": 1, + "Updated": 4, + "conform": 1, + "Propeller": 3, + "initialization": 2, + "standards.": 1, + "v1.1": 8, + "April": 1, + "consistency.": 1, + "OBJ": 2, + "lcd": 2, + "number": 27, + "string": 8, + "conversion": 1, + "PUB": 63, + "init": 2, + "baud": 2, + "lines": 24, + "okay": 11, + "Initializes": 1, + "serial": 1, + "LCD": 4, + "true": 6, + "if": 53, + "parameters": 19, + "lcd.init": 1, + "finalize": 1, + "Finalizes": 1, + "frees": 6, + "floats": 1, + "lcd.finalize": 1, + "putc": 1, + "txbyte": 2, + "Send": 1, + "byte": 27, + "terminal": 4, + "lcd.putc": 1, + "str": 3, + "strAddr": 2, + "Print": 15, + "zero": 10, + "terminated": 4, + "lcd.str": 8, + "dec": 3, + "signed": 4, + "decimal": 5, + "num.dec": 1, + "decf": 1, + "width": 9, + "Prints": 2, + "space": 1, + "padded": 2, + "fixed": 1, + "field": 4, + "num.decf": 1, + "decx": 1, + "digits": 23, + "negative": 2, + "num.decx": 1, + "hex": 3, + "hexadecimal": 4, + "num.hex": 1, + "ihex": 1, + "indicated": 2, + "num.ihex": 1, + "bin": 3, + "binary": 4, + "num.bin": 1, + "ibin": 1, + "%": 162, + "num.ibin": 1, + "cls": 1, + "Clears": 2, + "moves": 1, + "cursor": 9, + "home": 4, + "position": 9, + "lcd.cls": 1, + "Moves": 2, + "lcd.home": 1, + "gotoxy": 1, + "col": 9, + "line": 33, + "col/line": 1, + "lcd.gotoxy": 1, + "clrln": 1, + "lcd.clrln": 1, + "type": 4, + "Selects": 1, + "off": 8, + "blink": 4, + "lcd.cursor": 1, + "display": 23, + "status": 15, + "Controls": 1, + "visibility": 1, + "false": 7, + "hide": 1, + "contents": 3, + "clearing": 1, + "lcd.displayOn": 1, + "else": 3, + "lcd.displayOff": 1, + "custom": 2, + "char": 2, + "chrDataAddr": 3, + "Installs": 1, + "character": 6, + "map": 1, + "address": 16, + "definition": 9, + "array": 1, + "lcd.custom": 1, + "backLight": 1, + "Enable": 1, + "disable": 7, + "backlight": 1, + "affects": 1, + "backlit": 1, + "models": 1, + "lcd.backLight": 1, + "***************************************": 12, + "Graphics": 3, + "Driver": 4, + "Chip": 7, + "Gracey": 7, + "Theory": 1, + "cog": 39, + "launched": 1, + "processes": 1, + "commands": 1, + "via": 5, + "routines.": 1, + "Points": 1, + "arcs": 1, + "sprites": 1, + "text": 9, + "polygons": 1, + "rasterized": 1, + "specified": 1, + "stretch": 1, + "memory": 2, + "serves": 1, + "generic": 1, + "bitmap": 15, + "buffer.": 1, + "displayed": 1, + "TV.SRC": 1, + "VGA.SRC": 1, + "driver.": 3, + "GRAPHICS_DEMO.SRC": 1, + "usage": 1, + "example.": 1, + "CON": 4, + "#1": 47, + "_setup": 1, + "_color": 2, + "_width": 2, + "_plot": 2, + "_line": 2, + "_arc": 2, + "_vec": 2, + "_vecarc": 2, + "_pix": 1, + "_pixarc": 1, + "_text": 2, + "_textarc": 1, + "_textmode": 2, + "_fill": 1, + "_loop": 5, + "VAR": 10, + "long": 122, + "command": 7, + "bitmap_base": 7, + "pixel": 40, + "data": 47, + "slices": 3, + "text_xs": 1, + "text_ys": 1, + "text_sp": 1, + "text_just": 1, + "font": 3, + "pointer": 14, + "same": 7, + "instances": 1, + "stop": 9, + "cognew": 4, + "@loop": 1, + "@command": 1, + "Stop": 6, + "graphics": 4, + "driver": 17, + "cogstop": 3, + "setup": 3, + "x_tiles": 9, + "y_tiles": 9, + "x_origin": 2, + "y_origin": 2, + "base_ptr": 3, + "|": 22, + "bases_ptr": 3, + "slices_ptr": 1, + "Set": 5, + "x": 112, + "tiles": 19, + "x16": 7, + "pixels": 14, + "each": 11, + "y": 80, + "relative": 2, + "center": 10, + "base": 6, + "setcommand": 13, + "write": 36, + "bases": 2, + "<<": 70, + "retain": 2, + "high": 7, + "level": 5, + "bitmap_longs": 1, + "clear": 5, + "dest_ptr": 2, + "Copy": 1, + "double": 2, + "buffered": 1, + "flicker": 5, + "destination": 1, + "color": 39, + "bit": 35, + "pattern": 2, + "code": 3, + "bits": 29, + "@colors": 2, + "&": 21, + "determine": 2, + "shape/width": 2, + "w": 8, + "F": 18, + "pixel_width": 1, + "pixel_passes": 2, + "@w": 1, + "update": 7, + "new": 6, + "repeat": 18, + "i": 24, + "p": 8, + "E": 7, + "r": 4, + "<": 14, + "colorwidth": 1, + "plot": 17, + "Plot": 3, + "@x": 6, + "Draw": 7, + "endpoint": 1, + "arc": 21, + "xr": 7, + "yr": 7, + "angle": 23, + "anglestep": 2, + "steps": 9, + "arcmode": 2, + "radii": 3, + "initial": 6, + "FFF": 3, + "..359.956": 3, + "step": 9, + "leaves": 1, + "between": 4, + "points": 2, + "vec": 1, + "vecscale": 5, + "vecangle": 5, + "vecdef_ptr": 5, + "vector": 12, + "sprite": 14, + "scale": 7, + "rotation": 3, + "Vector": 2, + "word": 212, + "length": 4, + "vecarc": 2, + "pix": 3, + "pixrot": 3, + "pixdef_ptr": 3, + "mirror": 1, + "Pixel": 1, + "justify": 4, + "draw": 5, + "textarc": 1, + "string_ptr": 6, + "justx": 2, + "justy": 3, + "it": 8, + "may": 6, + "necessary": 1, + "call": 44, + ".finish": 1, + "immediately": 1, + "afterwards": 1, + "prevent": 1, + "subsequent": 1, + "clobbering": 1, + "drawn": 1, + "@justx": 1, + "@x_scale": 1, + "get": 30, + "half": 2, + "min": 4, + "max": 6, + "pmin": 1, + "round/square": 1, + "corners": 1, + "y2": 7, + "x2": 6, + "fill": 3, + "pmax": 2, + "triangle": 3, + "sides": 1, + "polygon": 1, + "tri": 2, + "x3": 4, + "y3": 5, + "y4": 1, + "x1": 5, + "y1": 7, + "xy": 1, + "solid": 1, + "/": 27, + "finish": 2, + "Wait": 2, + "current": 3, + "insure": 2, + "safe": 1, + "manually": 1, + "manipulate": 1, + "while": 5, + "primitives": 1, + "xa0": 53, + "start": 16, + "ya1": 3, + "ya2": 1, + "ya3": 2, + "ya4": 40, + "ya5": 3, + "ya6": 21, + "ya7": 9, + "ya8": 19, + "ya9": 5, + "yaA": 18, + "yaB": 4, + "yaC": 12, + "yaD": 4, + "yaE": 1, + "yaF": 1, + "xb0": 19, + "yb1": 2, + "yb2": 1, + "yb3": 4, + "yb4": 15, + "yb5": 2, + "yb6": 7, + "yb7": 3, + "yb8": 20, + "yb9": 5, + "ybA": 8, + "ybB": 1, + "ybC": 32, + "ybD": 1, + "ybE": 1, + "ybF": 1, + "ax1": 11, + "radius": 2, + "ay2": 23, + "ay3": 6, + "ay4": 4, + "a0": 8, + "a2": 1, + "farc": 41, + "another": 7, + "arc/line": 1, + "Round": 1, + "recipes": 1, + "C": 11, + "D": 18, + "fline": 88, + "xa2": 48, + "xb2": 26, + "xa1": 8, + "xb1": 2, + "more": 90, + "xa3": 8, + "xb3": 6, + "xb4": 35, + "a9": 3, + "ax2": 30, + "ay1": 10, + "a7": 2, + "aE": 1, + "aC": 2, + ".": 2, + "aF": 4, + "aD": 3, + "aB": 2, + "xa4": 13, + "a8": 8, + "@": 1, + "a4": 3, + "B": 15, + "H": 1, + "J": 1, + "L": 5, + "N": 1, + "P": 6, + "R": 3, + "T": 5, + "aA": 5, + "V": 7, + "X": 4, + "Z": 1, + "b": 1, + "d": 2, + "f": 2, + "h": 2, + "j": 2, + "l": 2, + "t": 10, + "v": 1, + "z": 4, + "delta": 10, + "bullet": 1, + "fx": 1, + "*************************************": 2, + "org": 2, + "loop": 14, + "rdlong": 16, + "t1": 139, + "par": 20, + "wz": 21, + "arguments": 1, + "mov": 154, + "t2": 90, + "t3": 10, + "#8": 14, + "arg": 3, + "arg0": 12, + "add": 92, + "d0": 11, + "#4": 8, + "djnz": 24, + "wrlong": 6, + "dx": 20, + "dy": 15, + "arg1": 3, + "ror": 4, + "#16": 6, + "jump": 1, + "jumps": 6, + "color_": 1, + "plot_": 2, + "arc_": 2, + "vecarc_": 1, + "pixarc_": 1, + "textarc_": 2, + "fill_": 1, + "setup_": 1, + "xlongs": 4, + "xorigin": 2, + "yorigin": 4, + "arg3": 12, + "basesptr": 4, + "arg5": 6, + "jmp": 24, + "#loop": 9, + "width_": 1, + "pwidth": 3, + "passes": 3, + "#plotd": 3, + "line_": 1, + "#linepd": 2, + "arg7": 6, + "#3": 7, + "cmp": 16, + "exit": 5, + "px": 14, + "py": 11, + "mode": 7, + "if_z": 11, + "#plotp": 3, + "test": 38, + "arg4": 5, + "iterations": 1, + "vecdef": 1, + "rdword": 10, + "t7": 8, + "add/sub": 1, + "to/from": 1, + "t6": 7, + "sumc": 4, + "#multiply": 2, + "round": 1, + "up": 4, + "/2": 1, + "lsb": 1, + "shr": 24, + "t4": 7, + "if_nc": 15, + "h8000": 5, + "wc": 57, + "if_c": 37, + "xwords": 1, + "ywords": 1, + "xxxxxxxx": 2, + "save": 1, + "actual": 4, + "sy": 5, + "rdbyte": 3, + "origin": 1, + "adjust": 4, + "neg": 2, + "sub": 12, + "arg2": 7, + "sumnc": 7, + "if_nz": 18, + "yline": 1, + "sx": 4, + "#0": 20, + "next": 16, + "#2": 15, + "shl": 21, + "t5": 4, + "xpixel": 2, + "rol": 1, + "muxc": 5, + "pcolor": 5, + "color1": 2, + "color2": 2, + "@string": 1, + "#arcmod": 1, + "text_": 1, + "chr": 4, + "done": 3, + "scan": 7, + "tjz": 8, + "def": 2, + "extract": 4, + "_0001_1": 1, + "#fontb": 3, + "textsy": 2, + "starting": 1, + "_0011_0": 1, + "#11": 1, + "#arcd": 1, + "#fontxy": 1, + "advance": 2, + "textsx": 3, + "_0111_0": 1, + "setd_ret": 1, + "fontxy_ret": 1, + "ret": 17, + "fontb": 1, + "multiply": 8, + "fontb_ret": 1, + "textmode_": 1, + "textsp": 2, + "da": 1, + "db": 1, + "db2": 1, + "linechange": 1, + "lines_minus_1": 1, + "right": 9, + "fractions": 1, + "pre": 1, + "increment": 1, + "counter": 1, + "yloop": 2, + "integers": 1, + "base0": 17, + "base1": 10, + "sar": 8, + "cmps": 3, + "out": 24, + "range": 2, + "ylongs": 6, + "skip": 5, + "mins": 1, + "mask": 3, + "mask0": 8, + "#5": 2, + "ready": 10, + "count": 4, + "mask1": 6, + "bits0": 6, + "bits1": 5, + "pass": 5, + "not": 6, + "full": 3, + "longs": 15, + "deltas": 1, + "linepd": 1, + "wr": 2, + "direction": 2, + "abs": 1, + "dominant": 2, + "axis": 1, + "last": 6, + "ratio": 1, + "xloop": 1, + "linepd_ret": 1, + "plotd": 1, + "wide": 3, + "bounds": 2, + "#plotp_ret": 2, + "#7": 2, + "store": 1, + "writes": 1, + "pair": 1, + "account": 1, + "special": 1, + "case": 5, + "andn": 7, + "slice": 7, + "shift0": 1, + "colorize": 1, + "upper": 2, + "subx": 1, + "#wslice": 1, + "offset": 14, + "Get": 2, + "args": 5, + "move": 2, + "using": 1, + "first": 9, + "arg6": 1, + "arcmod_ret": 1, + "arg2/t4": 1, + "arg4/t6": 1, + "arcd": 1, + "#setd": 1, + "#polarx": 1, + "Polar": 1, + "cartesian": 1, + "polarx": 1, + "sine_90": 2, + "sine": 7, + "quadrant": 3, + "nz": 3, + "negate": 2, + "table": 9, + "sine_table": 1, + "shift": 7, + "final": 3, + "sine/cosine": 1, + "integer": 2, + "negnz": 3, + "sine_180": 1, + "shifted": 1, + "multiplier": 3, + "product": 1, + "Defined": 1, + "constants": 2, + "hFFFFFFFF": 1, + "FFFFFFFF": 1, + "fontptr": 1, + "Undefined": 2, + "temps": 1, + "res": 89, + "pointers": 2, + "slicesptr": 1, + "line/plot": 1, + "coordinates": 1, + "Inductive": 1, + "Sensor": 1, + "Demo": 1, + "Test": 2, + "Circuit": 1, + "pF": 1, + "K": 4, + "M": 1, + "FPin": 2, + "SDF": 1, + "sigma": 3, + "feedback": 2, + "SDI": 1, + "GND": 4, + "Coils": 1, + "Wire": 1, + "used": 9, + "was": 2, + "GREEN": 2, + "about": 4, + "gauge": 1, + "Coke": 3, + "Can": 3, + "form": 7, + "MHz": 16, + "BIC": 1, + "pen": 1, + "How": 1, + "does": 2, + "work": 2, + "Note": 1, + "reported": 2, + "resonate": 5, + "frequency": 18, + "LC": 8, + "frequency.": 2, + "Instead": 1, + "voltage": 5, + "produced": 1, + "circuit": 5, + "clipped.": 1, + "In": 2, + "below": 4, + "When": 1, + "you": 5, + "apply": 1, + "small": 1, + "specific": 1, + "near": 1, + "uncommon": 1, + "measure": 1, + "times": 3, + "amount": 1, + "applying": 1, + "circuit.": 1, + "through": 1, + "diode": 2, + "basically": 1, + "feeds": 1, + "divide": 3, + "divider": 1, + "...So": 1, + "order": 1, + "see": 2, + "ADC": 2, + "sweep": 2, + "result": 6, + "output": 11, + "needs": 1, + "generate": 1, + "Volts": 1, + "ground.": 1, + "drop": 1, + "across": 1, + "since": 1, + "sensitive": 1, + "works": 1, + "after": 2, + "divider.": 1, + "typical": 1, + "magnitude": 1, + "applied": 2, + "might": 1, + "look": 2, + "something": 1, + "*****": 4, + "...With": 1, + "looks": 1, + "X****": 1, + "...The": 1, + "denotes": 1, + "location": 1, + "reason": 1, + "slightly": 1, + "reasons": 1, + "really.": 1, + "lazy": 1, + "I": 1, + "didn": 1, + "acts": 1, + "dead": 1, + "short.": 1, + "situation": 1, + "exactly": 1, + "great": 1, + "gr.start": 2, + "gr.setup": 2, + "FindResonateFrequency": 1, + "DisplayInductorValue": 2, + "Freq.Synth": 1, + "FValue": 1, + "ADC.SigmaDelta": 1, + "@FTemp": 1, + "gr.clear": 1, + "gr.copy": 2, + "display_base": 2, + "Option": 2, + "Start": 6, + "*********************************************": 2, + "Frequency": 1, + "LowerFrequency": 2, + "*100/": 1, + "UpperFrequency": 1, + "gr.colorwidth": 4, + "gr.plot": 3, + "gr.line": 3, + "FTemp/1024": 1, + "Finish": 1, + "PS/2": 1, + "Keyboard": 1, + "v1.0.1": 2, + "REVISION": 2, + "HISTORY": 2, + "/15/2006": 2, + "Tool": 1, + "par_tail": 1, + "key": 4, + "buffer": 4, + "head": 1, + "par_present": 1, + "states": 1, + "par_keys": 1, + "******************************************": 2, + "entry": 1, + "movd": 10, + "#_dpin": 1, + "masks": 1, + "dmask": 4, + "_dpin": 3, + "cmask": 2, + "_cpin": 2, + "reset": 14, + "parameter": 14, + "_head": 6, + "_present/_states": 1, + "dlsb": 2, + "stat": 6, + "Update": 1, + "_head/_present/_states": 1, + "#1*4": 1, + "scancode": 2, + "state": 2, + "#receive": 1, + "AA": 1, + "extended": 1, + "if_nc_and_z": 2, + "F0": 3, + "unknown": 2, + "ignore": 2, + "#newcode": 1, + "_states": 2, + "set/clear": 1, + "#_states": 1, + "reg": 5, + "muxnc": 5, + "cmpsub": 4, + "shift/ctrl/alt/win": 1, + "pairs": 1, + "E0": 1, + "handle": 1, + "scrlock/capslock/numlock": 1, + "_000": 5, + "_locks": 5, + "#29": 1, + "change": 3, + "configure": 3, + "flag": 5, + "leds": 3, + "check": 5, + "shift1": 1, + "if_nz_and_c": 4, + "#@shift1": 1, + "@table": 1, + "#look": 1, + "alpha": 1, + "considering": 1, + "capslock": 1, + "if_nz_and_nc": 1, + "xor": 8, + "flags": 1, + "alt": 1, + "room": 1, + "valid": 2, + "enter": 1, + "FF": 3, + "#11*4": 1, + "wrword": 1, + "F3": 1, + "keyboard": 3, + "lock": 1, + "#transmit": 2, + "rev": 1, + "rcl": 2, + "_present": 2, + "#update": 1, + "Lookup": 2, + "perform": 2, + "lookup": 1, + "movs": 9, + "#table": 1, + "#27": 1, + "#rand": 1, + "Transmit": 1, + "pull": 2, + "clock": 4, + "low": 5, + "napshr": 3, + "#13": 3, + "#18": 2, + "release": 1, + "transmit_bit": 1, + "#wait_c0": 2, + "_d2": 1, + "wcond": 3, + "c1": 2, + "c0d0": 2, + "wait": 6, + "until": 3, + "#wait": 2, + "#receive_ack": 1, + "ack": 1, + "error": 1, + "#reset": 2, + "transmit_ret": 1, + "receive": 1, + "receive_bit": 1, + "pause": 1, + "us": 1, + "#nap": 1, + "_d3": 1, + "#receive_bit": 1, + "align": 1, + "isolate": 1, + "look_ret": 1, + "receive_ack_ret": 1, + "receive_ret": 1, + "wait_c0": 1, + "c0": 1, + "timeout": 1, + "ms": 4, + "wloop": 1, + "required": 4, + "_d4": 1, + "replaced": 1, + "c0/c1/c0d0/c1d1": 1, + "if_never": 1, + "replacements": 1, + "#wloop": 3, + "if_c_or_nz": 1, + "c1d1": 1, + "if_nc_or_z": 1, + "nap": 5, + "scales": 1, + "time": 7, + "snag": 1, + "cnt": 2, + "elapses": 1, + "nap_ret": 1, + "F9": 1, + "F5": 1, + "D2": 1, + "F1": 2, + "D1": 1, + "F12": 1, + "F10": 1, + "D7": 1, + "F6": 1, + "D3": 1, + "Tab": 2, + "Alt": 2, + "F3F2": 1, + "q": 1, + "Win": 2, + "Space": 2, + "Apps": 1, + "Power": 1, + "Sleep": 1, + "EF2F": 1, + "CapsLock": 1, + "Enter": 3, + "WakeUp": 1, + "BackSpace": 1, + "C5E1": 1, + "C0E4": 1, + "Home": 1, + "Insert": 1, + "C9EA": 1, + "Down": 1, + "E5": 1, + "Right": 1, + "C2E8": 1, + "Esc": 1, + "DF": 2, + "F11": 1, + "EC": 1, + "PageDn": 1, + "ED": 1, + "PrScr": 1, + "C6E9": 1, + "ScrLock": 1, + "D6": 1, + "Uninitialized": 3, + "_________": 5, + "Key": 1, + "Codes": 1, + "keypress": 1, + "keystate": 2, + "E0..FF": 1, + "AS": 1, + "TV": 9, + "May": 2, + "tile": 41, + "size": 5, + "enable": 5, + "efficient": 2, + "tv_mode": 2, + "NTSC": 11, + "lntsc": 3, + "cycles": 4, + "per": 4, + "sync": 10, + "fpal": 2, + "_433_618": 2, + "PAL": 10, + "spal": 3, + "colortable": 7, + "inside": 2, + "tvptr": 3, + "starts": 4, + "available": 4, + "@entry": 3, + "Assembly": 2, + "language": 2, + "Entry": 2, + "tasks": 6, + "#10": 2, + "Superfield": 2, + "_mode": 7, + "interlace": 20, + "vinv": 2, + "hsync": 5, + "waitvid": 3, + "burst": 2, + "sync_high2": 2, + "task": 2, + "section": 4, + "undisturbed": 2, + "black": 2, + "visible": 7, + "vb": 2, + "leftmost": 1, + "_vt": 3, + "vertical": 29, + "expand": 3, + "vert": 1, + "vscl": 12, + "hb": 2, + "horizontal": 21, + "hx": 5, + "colors": 18, + "screen": 13, + "video": 7, + "repoint": 2, + "hf": 2, + "linerot": 5, + "field1": 4, + "unless": 2, + "invisible": 8, + "if_z_eq_c": 1, + "#hsync": 1, + "vsync": 4, + "pulses": 2, + "vsync1": 2, + "#sync_low1": 1, + "hhalf": 2, + "field2": 1, + "#superfield": 1, + "Blank": 1, + "Horizontal": 1, + "pal": 2, + "toggle": 1, + "phaseflip": 4, + "phasemask": 2, + "sync_scale1": 1, + "blank": 2, + "hsync_ret": 1, + "vsync_high": 1, + "#sync_high1": 1, + "Tasks": 1, + "performed": 1, + "sections": 1, + "during": 2, + "back": 8, + "porch": 9, + "load": 3, + "#_enable": 1, + "_pins": 4, + "_enable": 2, + "#disabled": 2, + "break": 6, + "return": 15, + "later": 6, + "rd": 1, + "#wtab": 1, + "ltab": 1, + "#ltab": 1, + "CLKFREQ": 10, + "cancel": 1, + "_broadcast": 4, + "m8": 3, + "jmpret": 5, + "taskptr": 3, + "taskret": 4, + "ctra": 5, + "pll": 5, + "fcolor": 4, + "#divide": 2, + "vco": 3, + "movi": 3, + "_111": 1, + "ctrb": 4, + "limit": 4, + "m128": 2, + "_100": 1, + "within": 5, + "_001": 1, + "frqb": 2, + "swap": 2, + "broadcast/baseband": 1, + "strip": 3, + "chroma": 19, + "baseband": 18, + "_auralcog": 1, + "_hx": 4, + "consider": 2, + "lineadd": 4, + "lineinc": 3, + "/160": 2, + "loaded": 3, + "#9": 2, + "FC": 2, + "_colors": 2, + "colorreg": 3, + "d6": 3, + "colorloop": 1, + "keep": 2, + "loading": 2, + "m1": 4, + "multiply_ret": 2, + "Disabled": 2, + "try": 2, + "again": 2, + "reload": 1, + "_000_000": 6, + "d0s1": 1, + "F0F0F0F0": 1, + "pins0": 1, + "_01110000_00001111_00000111": 1, + "pins1": 1, + "_11110111_01111111_01110111": 1, + "sync_high1": 1, + "_101010_0101": 1, + "NTSC/PAL": 2, + "metrics": 1, + "tables": 1, + "wtab": 1, + "sntsc": 3, + "lpal": 3, + "hrest": 2, + "vvis": 2, + "vrep": 2, + "_8A": 1, + "_AA": 1, + "sync_scale2": 1, + "_00000000_01_10101010101010_0101": 1, + "m2": 1, + "Parameter": 4, + "/non": 4, + "tccip": 3, + "_screen": 3, + "@long": 2, + "_ht": 2, + "_ho": 2, + "fit": 2, + "contiguous": 1, + "tv_status": 4, + "off/on": 3, + "tv_pins": 5, + "ntsc/pal": 3, + "tv_screen": 5, + "tv_ht": 5, + "tv_hx": 5, + "expansion": 8, + "tv_ho": 5, + "tv_broadcast": 4, + "aural": 13, + "fm": 6, + "preceding": 2, + "copied": 2, + "your": 2, + "code.": 2, + "After": 2, + "setting": 2, + "variables": 3, + "@tv_status": 3, + "All": 2, + "reloaded": 2, + "superframe": 2, + "allowing": 2, + "live": 2, + "changes.": 2, + "minimize": 2, + "correlate": 2, + "changes": 3, + "tv_status.": 1, + "Experimentation": 2, + "optimize": 2, + "some": 3, + "parameters.": 2, + "descriptions": 2, + "sets": 3, + "indicate": 2, + "disabled": 3, + "tv_enable": 2, + "requirement": 2, + "currently": 4, + "outputting": 4, + "driven": 2, + "reduces": 2, + "power": 3, + "_______": 2, + "select": 9, + "group": 7, + "_0111": 6, + "broadcast": 19, + "_1111": 6, + "_0000": 4, + "active": 3, + "top": 10, + "nibble": 4, + "bottom": 5, + "signal": 8, + "arranged": 3, + "attach": 1, + "ohm": 10, + "resistor": 4, + "sum": 7, + "/560/1100": 2, + "subcarrier": 3, + "network": 1, + "visual": 1, + "carrier": 1, + "selects": 4, + "x32": 6, + "tileheight": 4, + "controls": 4, + "mixing": 2, + "mix": 2, + "black/white": 2, + "composite": 1, + "progressive": 2, + "less": 5, + "good": 5, + "motion": 2, + "interlaced": 5, + "doubles": 1, + "format": 1, + "ticks": 11, + "must": 18, + "least": 14, + "_318_180": 1, + "_579_545": 1, + "Hz": 5, + "_734_472": 1, + "itself": 1, + "words": 5, + "define": 10, + "tv_vt": 3, + "has": 4, + "bitfields": 2, + "colorset": 2, + "ptr": 5, + "pixelgroup": 2, + "colorset*": 2, + "pixelgroup**": 2, + "ppppppppppcccc00": 2, + "colorsets": 4, + "four": 8, + "**": 2, + "pixelgroups": 2, + "": 5, + "tv_colors": 2, + "fields": 2, + "values": 2, + "luminance": 2, + "modulation": 4, + "adds/subtracts": 1, + "beware": 1, + "modulated": 1, + "produce": 1, + "saturated": 1, + "toggling": 1, + "levels": 1, + "because": 1, + "abruptly": 1, + "rather": 1, + "against": 1, + "white": 2, + "background": 1, + "best": 1, + "appearance": 1, + "_____": 6, + "practical": 2, + "/30": 1, + "factor": 4, + "sure": 4, + "||": 5, + "than": 5, + "tv_vx": 2, + "tv_vo": 2, + "pos/neg": 4, + "centered": 2, + "image": 2, + "shifts": 4, + "right/left": 2, + "up/down": 2, + "____________": 1, + "expressed": 1, + "ie": 1, + "channel": 1, + "_250_000": 2, + "modulator": 2, + "turned": 2, + "saves": 2, + "broadcasting": 1, + "___________": 1, + "tv_auralcog": 1, + "supply": 1, + "selected": 1, + "bandwidth": 2, + "KHz": 3, + "vary": 1, + "Terminal": 1, + "instead": 1, + "minimum": 2, + "x_scale": 4, + "x_spacing": 4, + "normal": 1, + "x_chr": 2, + "y_chr": 5, + "y_scale": 3, + "y_spacing": 3, + "y_offset": 2, + "x_limit": 2, + "x_screen": 1, + "y_limit": 3, + "y_screen": 4, + "y_max": 3, + "y_screen_bytes": 2, + "y_scroll": 2, + "y_scroll_longs": 4, + "y_clear": 2, + "y_clear_longs": 2, + "paramcount": 1, + "ccinp": 1, + "tv_hc": 1, + "cells": 1, + "cell": 1, + "@bitmap": 1, + "FC0": 1, + "gr.textmode": 1, + "gr.width": 1, + "tv.stop": 2, + "gr.stop": 1, + "schemes": 1, + "tab": 3, + "gr.color": 1, + "gr.text": 1, + "@c": 1, + "gr.finish": 2, + "newline": 3, + "strsize": 2, + "_000_000_000": 2, + "//": 4, + "elseif": 2, + "lookupz": 2, + "..": 4, + "PRI": 1, + "longmove": 2, + "longfill": 2, + "tvparams": 1, + "tvparams_pins": 1, + "_0101": 1, + "vc": 1, + "vx": 2, + "vo": 1, + "auralcog": 1, + "color_schemes": 1, + "BC_6C_05_02": 1, + "E_0D_0C_0A": 1, + "E_6D_6C_6A": 1, + "BE_BD_BC_BA": 1, + "Text": 1, + "x13": 2, + "cols": 5, + "rows": 4, + "screensize": 4, + "lastrow": 2, + "tv_count": 2, + "row": 4, + "tv": 2, + "basepin": 3, + "setcolors": 2, + "@palette": 1, + "@tv_params": 1, + "@screen": 3, + "tv.start": 1, + "stringptr": 3, + "k": 1, + "Output": 1, + "backspace": 1, + "spaces": 1, + "follows": 4, + "Y": 2, + "others": 1, + "printable": 1, + "characters": 1, + "wordfill": 2, + "print": 2, + "A..": 1, + "other": 1, + "colorptr": 2, + "fore": 3, + "Override": 1, + "default": 1, + "palette": 2, + "list": 1, + "scroll": 1, + "hc": 1, + "ho": 1, + "dark": 2, + "blue": 3, + "BB": 1, + "yellow": 1, + "brown": 1, + "cyan": 3, + "red": 2, + "pink": 1, + "VGA": 8, + "vga_mode": 3, + "vgaptr": 3, + "hv": 5, + "bcolor": 3, + "#colortable": 2, + "#blank_line": 3, + "nobl": 1, + "_vx": 1, + "nobp": 1, + "nofp": 1, + "#blank_hsync": 1, + "front": 4, + "vf": 1, + "nofl": 1, + "#tasks": 1, + "before": 1, + "_vs": 2, + "except": 1, + "#blank_vsync": 1, + "#field": 1, + "superfield": 1, + "blank_vsync": 1, + "h2": 2, + "if_c_and_nz": 1, + "blank_hsync": 1, + "_hf": 1, + "invisble": 1, + "_hb": 1, + "#hv": 1, + "blank_hsync_ret": 1, + "blank_line_ret": 1, + "blank_vsync_ret": 1, + "_status": 1, + "#paramcount": 1, + "directions": 1, + "_rate": 3, + "pllmin": 1, + "_011": 1, + "rate": 6, + "hvbase": 5, + "frqa": 3, + "vmask": 1, + "hmask": 1, + "vcfg": 2, + "colormask": 1, + "waitcnt": 3, + "#entry": 1, + "Initialized": 1, + "lowest": 1, + "pllmax": 1, + "*16": 1, + "m4": 1, + "tihv": 1, + "_hd": 1, + "_hs": 1, + "_vd": 1, + "underneath": 1, + "BF": 1, + "___": 1, + "/1/2": 1, + "off/visible/invisible": 1, + "vga_enable": 3, + "pppttt": 1, + "vga_colors": 2, + "vga_vt": 6, + "vga_vx": 4, + "vga_vo": 4, + "vga_hf": 2, + "vga_hb": 2, + "vga_vf": 2, + "vga_vb": 2, + "tick": 2, + "@vga_status": 1, + "vga_status.": 1, + "__________": 4, + "vga_status": 1, + "________": 3, + "vga_pins": 1, + "monitors": 1, + "allows": 1, + "polarity": 1, + "respectively": 1, + "vga_screen": 1, + "vga_ht": 3, + "care": 1, + "suggested": 1, + "bits/pins": 3, + "green": 1, + "bit/pin": 1, + "signals": 1, + "connect": 3, + "RED": 1, + "BLUE": 1, + "connector": 3, + "always": 2, + "HSYNC": 1, + "VSYNC": 1, + "______": 14, + "vga_hx": 3, + "vga_ho": 2, + "equal": 1, + "vga_hd": 2, + "exceed": 1, + "vga_vd": 2, + "recommended": 2, + "vga_hs": 1, + "vga_vs": 1, + "vga_rate": 2, + "should": 1, + "Vocal": 2, + "Tract": 2, + "October": 1, + "synthesizes": 1, + "human": 1, + "vocal": 10, + "tract": 12, + "real": 2, + "It": 1, + "MHz.": 1, + "controlled": 1, + "reside": 1, + "parent": 1, + "aa": 2, + "ga": 5, + "gp": 2, + "vp": 3, + "vr": 1, + "f1": 4, + "f2": 1, + "f3": 3, + "f4": 2, + "na": 2, + "nf": 2, + "fa": 2, + "ff": 2, + "values.": 2, + "Before": 1, + "were": 1, + "interpolation": 1, + "shy": 1, + "frame": 12, + "makes": 1, + "behave": 1, + "sensibly": 1, + "gaps.": 1, + "frame_buffers": 2, + "bytes": 2, + "frame_longs": 3, + "frame_bytes": 1, + "...must": 1, + "dira_": 3, + "dirb_": 1, + "ctra_": 1, + "ctrb_": 3, + "frqa_": 3, + "cnt_": 1, + "many": 1, + "...contiguous": 1, + "tract_ptr": 3, + "pos_pin": 7, + "neg_pin": 6, + "fm_offset": 5, + "positive": 1, + "also": 1, + "enabled": 2, + "generation": 2, + "_500_000": 1, + "Remember": 1, + "duty": 2, + "Ready": 1, + "clkfreq": 2, + "Launch": 1, + "@attenuation": 1, + "Reset": 1, + "buffers": 1, + "@index": 1, + "constant": 3, + "frame_buffer_longs": 2, + "set_attenuation": 1, + "master": 2, + "attenuation": 3, + "initially": 2, + "set_pace": 2, + "percentage": 3, + "pace": 3, + "go": 1, + "Queue": 1, + "transition": 1, + "over": 2, + "Load": 1, + "bytemove": 1, + "@frames": 1, + "index": 5, + "Increment": 1, + "Returns": 4, + "queue": 2, + "useful": 2, + "checking": 1, + "would": 1, + "have": 1, + "frames": 2, + "empty": 2, + "detecting": 1, + "finished": 1, + "sample_ptr": 1, + "receives": 1, + "audio": 1, + "samples": 1, + "updated": 1, + "@sample": 1, + "aural_id": 1, + "id": 2, + "executing": 1, + "algorithm": 1, + "connecting": 1, + "Initialization": 1, + "reserved": 3, + "clear_cnt": 1, + "#2*15": 1, + "hub": 1, + "minst": 3, + "d0s0": 3, + "mult_ret": 1, + "antilog_ret": 1, + "assemble": 1, + "cordic": 4, + "reserves": 2, + "cstep": 1, + "instruction": 2, + "prepare": 1, + "cnt_value": 3, + "cnt_ticks": 3, + "Loop": 1, + "sample": 2, + "period": 1, + "cycle": 1, + "driving": 1, + "h80000000": 2, + "White": 1, + "noise": 3, + "source": 2, + "lfsr": 1, + "lfsr_taps": 2, + "Aspiration": 1, + "vibrato": 3, + "vphase": 2, + "glottal": 2, + "pitch": 5, + "mesh": 1, + "tune": 2, + "convert": 1, + "log": 2, + "phase": 2, + "gphase": 3, + "formant2": 2, + "rotate": 2, + "f2x": 3, + "f2y": 3, + "#cordic": 2, + "formant4": 2, + "f4x": 3, + "f4y": 3, + "subtract": 1, + "nx": 4, + "negated": 1, + "nasal": 2, + "amplitude": 3, + "#mult": 1, + "fphase": 4, + "frication": 2, + "#sine": 1, + "Handle": 1, + "frame_ptr": 6, + "past": 1, + "miscellaneous": 2, + "frame_index": 3, + "stepsize": 2, + "step_size": 5, + "h00FFFFFF": 2, + "final1": 2, + "finali": 2, + "iterate": 3, + "aa..ff": 4, + "accurate": 1, + "accumulation": 1, + "step_acc": 3, + "set2": 3, + "#par_curr": 1, + "set3": 2, + "#par_next": 1, + "set4": 3, + "#par_step": 1, + "#24": 1, + "par_curr": 3, + "absolute": 1, + "msb": 2, + "nr": 1, + "mult": 2, + "par_step": 1, + "frame_cnt": 2, + "step1": 2, + "stepi": 1, + "stepframe": 1, + "#frame_bytes": 1, + "par_next": 2, + "Math": 1, + "Subroutines": 1, + "Antilog": 1, + "whole": 2, + "fraction": 1, + "antilog": 2, + "FFEA0000": 1, + "h00000FFE": 2, + "insert": 2, + "leading": 1, + "Scaled": 1, + "unsigned": 3, + "h00001000": 2, + "negc": 1, + "Multiply": 1, + "#15": 1, + "mult_step": 1, + "Cordic": 1, + "degree": 1, + "#cordic_steps": 1, + "gets": 1, + "assembled": 1, + "cordic_dx": 1, + "incremented": 1, + "cordic_a": 1, + "cordic_delta": 2, + "linear": 1, + "register": 1, + "B901476": 1, + "greater": 1, + "h40000000": 1, + "h01000000": 1, + "FFFFFF": 1, + "h00010000": 1, + "h0000D000": 1, + "D000": 1, + "h00007000": 1, + "FFE": 1, + "h00000800": 1, + "registers": 2, + "startup": 2, + "Data": 1, + "zeroed": 1, + "cleared": 1, + "f1x": 1, + "f1y": 1, + "f3x": 1, + "f3y": 1, + "aspiration": 1, + "***": 1, + "mult_steps": 1, + "assembly": 1, + "area": 1, + "w/ret": 1, + "cordic_ret": 1 + }, "Protocol Buffer": { "package": 1, "tutorial": 1, @@ -63172,6 +65263,7 @@ "PowerShell": 12, "Processing": 74, "Prolog": 468, + "Propeller Spin": 13519, "Protocol Buffer": 63, "PureScript": 1652, "Python": 5994, @@ -63352,6 +65444,7 @@ "PowerShell": 2, "Processing": 1, "Prolog": 3, + "Propeller Spin": 10, "Protocol Buffer": 1, "PureScript": 4, "Python": 9, @@ -63406,5 +65499,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "6fca18dd283ca94243368fe26a135f97" + "md5": "cc8cc8cc1c967afd0bdcca3eea10001f" } \ No newline at end of file From fee7a34ddc2bad0248259502c23c71d0f576f7ca Mon Sep 17 00:00:00 2001 From: NN Date: Wed, 7 May 2014 20:47:09 +0300 Subject: [PATCH 13/42] Add targets sample. --- samples/XML/sample.targets | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 samples/XML/sample.targets diff --git a/samples/XML/sample.targets b/samples/XML/sample.targets new file mode 100644 index 00000000..50e1d81b --- /dev/null +++ b/samples/XML/sample.targets @@ -0,0 +1,9 @@ + + + MyCommon + + + + + + \ No newline at end of file From 987315707603da4a71c614098de75ca34847e098 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Wed, 7 May 2014 13:13:38 -0500 Subject: [PATCH 14/42] Updating samples --- lib/linguist/samples.json | 382 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 364 insertions(+), 18 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index 4411fd6f..dfabe80e 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -608,8 +608,15 @@ ], "XML": [ ".ant", + ".csproj", + ".filters", + ".fsproj", ".ivy", + ".nproj", ".pluginspec", + ".targets", + ".vbproj", + ".vcxproj", ".xml" ], "XProc": [ @@ -695,8 +702,8 @@ ".gemrc" ] }, - "tokens_total": 605947, - "languages_total": 732, + "tokens_total": 607168, + "languages_total": 739, "tokens": { "ABAP": { "*/**": 1, @@ -63776,8 +63783,132 @@ "return": 1 }, "XML": { - "": 4, - "version=": 10, + "": 10, + "version=": 16, + "encoding=": 7, + "": 7, + "ToolsVersion=": 6, + "DefaultTargets=": 5, + "xmlns=": 7, + "": 21, + "Project=": 12, + "Condition=": 37, + "": 26, + "": 6, + "Debug": 10, + "": 6, + "": 6, + "AnyCPU": 10, + "": 6, + "": 5, + "{": 6, + "D9BF15": 1, + "-": 90, + "D10": 1, + "ABAD688E8B": 1, + "}": 6, + "": 5, + "": 4, + "Exe": 4, + "": 4, + "": 2, + "Properties": 3, + "": 2, + "": 5, + "csproj_sample": 1, + "": 5, + "": 4, + "csproj": 1, + "sample": 6, + "": 4, + "": 5, + "v4.5.1": 5, + "": 5, + "": 3, + "": 3, + "": 3, + "true": 24, + "": 3, + "": 25, + "": 6, + "": 6, + "": 5, + "": 5, + "": 6, + "full": 4, + "": 6, + "": 7, + "false": 10, + "": 7, + "": 8, + "bin": 11, + "": 8, + "": 6, + "DEBUG": 3, + ";": 52, + "TRACE": 6, + "": 6, + "": 4, + "prompt": 4, + "": 4, + "": 8, + "": 8, + "pdbonly": 3, + "Release": 6, + "": 26, + "": 30, + "Include=": 78, + "": 26, + "": 10, + "": 5, + "": 7, + "": 2, + "": 2, + "cfa7a11": 1, + "a5cd": 1, + "bd7b": 1, + "b210d4d51a29": 1, + "fsproj_sample": 2, + "": 1, + "": 1, + "": 3, + "fsproj": 1, + "": 3, + "": 2, + "": 2, + "": 5, + "fsproj_sample.XML": 2, + "": 5, + "": 2, + "": 2, + "": 2, + "True": 13, + "": 2, + "": 5, + "": 1, + "": 1, + "": 1, + "": 1, + "": 2, + "(": 65, + "MSBuildExtensionsPath32": 2, + ")": 58, + "..": 1, + "Microsoft": 2, + "SDKs": 1, + "F#": 1, + "Framework": 1, + "v4.0": 1, + "Microsoft.FSharp.Targets": 2, + "": 2, + "": 1, + "": 1, + "VisualStudio": 1, + "v": 1, + "VisualStudioVersion": 1, + "FSharp": 1, + "": 1, + "": 1, "": 1, "name=": 227, "xmlns": 2, @@ -63786,7 +63917,6 @@ "This": 21, "easyant": 3, "module.ant": 1, - "sample": 2, "file": 3, "is": 123, "optionnal": 1, @@ -63852,7 +63982,6 @@ "default": 9, "junit": 2, "test": 7, - "-": 50, "/": 6, "": 1, "": 1, @@ -63878,9 +64007,7 @@ "used": 19, "both": 2, "Changing": 5, - "(": 53, "i.e.": 23, - ")": 46, "Changed": 4, "Observables.": 2, "In": 6, @@ -64040,7 +64167,6 @@ "ItemChanging": 2, "ItemChanged": 2, "properties": 29, - ";": 10, "implementing": 2, "rebroadcast": 2, "through": 3, @@ -64088,7 +64214,7 @@ "to.": 7, "": 12, "": 84, - "A": 19, + "A": 20, "identical": 11, "types": 10, "one": 27, @@ -64100,7 +64226,6 @@ "particular": 2, "registered.": 2, "message.": 1, - "True": 6, "posted": 3, "Type.": 2, "Registers": 3, @@ -64176,7 +64301,6 @@ "evicted": 2, "because": 2, "Invalidate": 2, - "full": 1, "Evaluates": 1, "returning": 1, "cached": 2, @@ -64394,7 +64518,6 @@ "notification": 6, "Attempts": 1, "expression": 3, - "false": 2, "expression.": 1, "entire": 1, "able": 1, @@ -64484,7 +64607,7 @@ "private": 1, "field.": 1, "Reference": 1, - "Use": 13, + "Use": 15, "custom": 4, "raiseAndSetIfChanged": 1, "doesn": 1, @@ -64560,7 +64683,40 @@ "setup.": 12, "": 1, "": 1, - "encoding=": 1, + "": 1, + "": 1, + "c67af951": 1, + "d8d6376993e7": 1, + "nproj_sample": 2, + "": 1, + "": 1, + "": 1, + "Net": 1, + "": 1, + "": 1, + "ProgramFiles": 1, + "Nemerle": 3, + "": 1, + "": 1, + "NemerleBinPathRoot": 1, + "NemerleVersion": 1, + "": 1, + "nproj": 1, + "OutputPath": 1, + "AssemblyName": 1, + ".xml": 1, + "": 3, + "": 3, + "": 1, + "False": 1, + "": 1, + "": 2, + "Nemerle.dll": 1, + "": 2, + "": 1, + "Nemerle.Linq.dll": 1, + "": 1, + "": 1, "": 1, "TS": 1, "": 1, @@ -64602,6 +64758,196 @@ "Ingl": 1, "": 1, "": 1, + "MyCommon": 1, + "": 1, + "Name=": 1, + "": 1, + "Text=": 1, + "": 1, + "D377F": 1, + "A798": 1, + "B3FD04C": 1, + "": 1, + "vbproj_sample.Module1": 1, + "": 1, + "vbproj_sample": 1, + "vbproj": 3, + "": 1, + "Console": 3, + "": 1, + "": 2, + "": 2, + "": 2, + "": 2, + "sample.xml": 2, + "": 2, + "": 2, + "": 1, + "On": 2, + "": 1, + "": 1, + "Binary": 1, + "": 1, + "": 1, + "Off": 1, + "": 1, + "": 1, + "": 1, + "": 3, + "": 3, + "": 3, + "Application.myapp": 1, + "": 3, + "": 3, + "": 1, + "": 1, + "Resources.resx": 1, + "Settings.settings": 1, + "": 1, + "": 1, + "": 1, + "": 3, + "VbMyResourcesResXFileCodeGenerator": 1, + "": 3, + "": 3, + "Resources.Designer.vb": 1, + "": 3, + "": 2, + "My.Resources": 1, + "": 2, + "": 1, + "Designer": 1, + "": 1, + "": 1, + "MyApplicationCodeGenerator": 1, + "Application.Designer.vb": 1, + "": 2, + "SettingsSingleFileGenerator": 1, + "My": 1, + "Settings.Designer.vb": 1, + "Label=": 11, + "": 2, + "Win32": 2, + "": 2, + "BF6EED48": 1, + "BF18": 1, + "C54": 1, + "F": 1, + "BBF19EEDC7C": 1, + "": 1, + "ManagedCProj": 1, + "": 1, + "vcxprojsample": 1, + "": 2, + "Application": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "v120": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "Unicode": 2, + "": 2, + "": 4, + "": 4, + "": 2, + "": 2, + "": 2, + "": 8, + "Level3": 2, + "": 1, + "Disabled": 1, + "": 1, + "": 2, + "WIN32": 2, + "_DEBUG": 1, + "%": 2, + "PreprocessorDefinitions": 2, + "": 2, + "": 4, + "": 4, + "": 6, + "": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "": 2, + "NDEBUG": 1, + "": 2, + "": 4, + "": 2, + "Create": 2, + "": 2, + "": 10, + "": 3, + "FC737F1": 1, + "C7A5": 1, + "A066": 1, + "A32D752A2FF": 1, + "": 3, + "": 3, + "cpp": 1, + "c": 1, + "cc": 1, + "cxx": 1, + "def": 1, + "odl": 1, + "idl": 1, + "hpj": 1, + "bat": 1, + "asm": 1, + "asmx": 1, + "": 3, + "": 10, + "BD": 1, + "b04": 1, + "EB": 1, + "FBE52EBFB": 1, + "h": 1, + "hh": 1, + "hpp": 1, + "hxx": 1, + "hm": 1, + "inl": 1, + "inc": 1, + "xsd": 1, + "DA6AB6": 1, + "F800": 1, + "c08": 1, + "B7A": 1, + "BB121AAD01": 1, + "rc": 1, + "ico": 1, + "cur": 1, + "bmp": 1, + "dlg": 1, + "rc2": 1, + "rct": 1, + "rgs": 1, + "gif": 1, + "jpg": 1, + "jpeg": 1, + "jpe": 1, + "resx": 1, + "tiff": 1, + "tif": 1, + "png": 1, + "wav": 1, + "mfcribbon": 1, + "ms": 1, + "Header": 2, + "Files": 7, + "": 2, + "Resource": 2, + "": 1, + "Source": 3, + "": 1, "": 1, "compatVersion=": 1, "": 1, @@ -65310,7 +65656,7 @@ "Volt": 388, "wisp": 1363, "XC": 24, - "XML": 5785, + "XML": 7006, "XProc": 22, "XQuery": 801, "XSLT": 44, @@ -65491,7 +65837,7 @@ "Volt": 1, "wisp": 1, "XC": 1, - "XML": 5, + "XML": 12, "XProc": 1, "XQuery": 1, "XSLT": 1, @@ -65499,5 +65845,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "cc8cc8cc1c967afd0bdcca3eea10001f" + "md5": "dfced8ef9ddd9813d2982dc25a5468fa" } \ No newline at end of file From 297ef6195da353560e65680a55e1731073d267aa Mon Sep 17 00:00:00 2001 From: alflanagan Date: Thu, 8 May 2014 21:02:00 -0400 Subject: [PATCH 15/42] Added modernizr.js to vendor files list, added tests --- lib/linguist/vendor.yml | 4 ++++ test/test_blob.rb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/linguist/vendor.yml b/lib/linguist/vendor.yml index 0c37cbf1..1380cdcb 100644 --- a/lib/linguist/vendor.yml +++ b/lib/linguist/vendor.yml @@ -104,6 +104,10 @@ # React - (^|/)react(-[^.]*)?(\.min)?\.js$ +# Modernizr +- (^|/)modernizr\-\d\.\d+(\.\d+)?(\.min)?\.js$ +- (^|/)modernizr\.custom\.\d+\.js$ + ## Python ## # django diff --git a/test/test_blob.rb b/test/test_blob.rb index a6a0a61b..ec1443ad 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -310,6 +310,10 @@ class TestBlob < Test::Unit::TestCase assert blob("public/javascripts/d3.v3.js").vendored? assert blob("public/javascripts/d3.v3.min.js").vendored? + # Modernizr + assert blob("public/javascripts/modernizr-2.7.1.js").vendored? + assert blob("public/javascripts/modernizr.custom.01009.js").vendored? + # Fabric assert blob("fabfile.py").vendored? From 92bc1cdcdfbbb4e8e6fad9db6ec9963aa12b5fcc Mon Sep 17 00:00:00 2001 From: Brian Lopez Date: Sun, 11 May 2014 23:39:46 +0200 Subject: [PATCH 16/42] bump charlock_holmes to 0.7.0 --- github-linguist.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-linguist.gemspec b/github-linguist.gemspec index df0943e1..2691b5b0 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.files = Dir['lib/**/*'] s.executables << 'linguist' - s.add_dependency 'charlock_holmes', '~> 0.6.6' + s.add_dependency 'charlock_holmes', '~> 0.7.0' s.add_dependency 'escape_utils', '~> 1.0.1' s.add_dependency 'mime-types', '~> 1.19' s.add_dependency 'pygments.rb', '~> 0.5.4' From c1e560b9010d2bb680e614b8397d53a03df373a2 Mon Sep 17 00:00:00 2001 From: Brian Lopez Date: Mon, 12 May 2014 16:17:57 +0200 Subject: [PATCH 17/42] use charlock 0.7.1 or better --- github-linguist.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-linguist.gemspec b/github-linguist.gemspec index 2691b5b0..b38abb6f 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.files = Dir['lib/**/*'] s.executables << 'linguist' - s.add_dependency 'charlock_holmes', '~> 0.7.0' + s.add_dependency 'charlock_holmes', '~> 0.7.1' s.add_dependency 'escape_utils', '~> 1.0.1' s.add_dependency 'mime-types', '~> 1.19' s.add_dependency 'pygments.rb', '~> 0.5.4' From c3642ba7edbf46b466ae1caa296d037271cb681b Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Mon, 12 May 2014 20:51:20 -0400 Subject: [PATCH 18/42] Groovy: Add .gvy, .grt, and .gtpl to the list of extensions --- lib/linguist/languages.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..e039ea58 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -819,6 +819,9 @@ Groovy: color: "#e69f56" extensions: - .groovy + - .gtpl + - .grt + - .gvy interpreters: - groovy From 37781cb58ed74532eb5ca60203918b24be948281 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 13 May 2014 09:47:54 -0500 Subject: [PATCH 19/42] Bumping to 2.11.0 --- lib/linguist/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/version.rb b/lib/linguist/version.rb index f54e6a76..af988b67 100644 --- a/lib/linguist/version.rb +++ b/lib/linguist/version.rb @@ -1,3 +1,3 @@ module Linguist - VERSION = "2.10.15" + VERSION = "2.11.0" end From 5c36f8df855b3bbfa9fac54b18f2021bdea4dc68 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Tue, 13 May 2014 15:37:20 -0400 Subject: [PATCH 20/42] Groovy: Sorted Extensions --- lib/linguist/languages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index e039ea58..f4eb4d22 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -818,9 +818,9 @@ Groovy: ace_mode: groovy color: "#e69f56" extensions: + - .grt - .groovy - .gtpl - - .grt - .gvy interpreters: - groovy From a22c2d678bd3e2848da2d905b56e9e0436ae7b60 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Tue, 13 May 2014 16:32:21 -0400 Subject: [PATCH 21/42] Created a Sample for .gtpl --- samples/Groovy/template.gtpl | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 samples/Groovy/template.gtpl diff --git a/samples/Groovy/template.gtpl b/samples/Groovy/template.gtpl new file mode 100644 index 00000000..f2e594d1 --- /dev/null +++ b/samples/Groovy/template.gtpl @@ -0,0 +1,9 @@ +html { + head { + title "Example Template" + } + + body { + p "This is a quick template example" + } +} From 13c9259d2302300f18965cdc25a656f3f9488158 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Tue, 13 May 2014 16:33:43 -0400 Subject: [PATCH 22/42] Created Sample for .grt --- samples/Groovy/template.grt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 samples/Groovy/template.grt diff --git a/samples/Groovy/template.grt b/samples/Groovy/template.grt new file mode 100644 index 00000000..59bb9c22 --- /dev/null +++ b/samples/Groovy/template.grt @@ -0,0 +1,9 @@ +html { + head { + component "bootstrap" + title "Bootstrap Template" + } + + html { + } +} From 51dde1f6a468017f5c1dbdd5b7f3af9f4c8c3bac Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Tue, 13 May 2014 16:34:20 -0400 Subject: [PATCH 23/42] Created Sample for .gvy --- samples/Groovy/script.gvy | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 samples/Groovy/script.gvy diff --git a/samples/Groovy/script.gvy b/samples/Groovy/script.gvy new file mode 100644 index 00000000..25ef2eab --- /dev/null +++ b/samples/Groovy/script.gvy @@ -0,0 +1,2 @@ +#!/usr/bin/env groovy +println "Hello World" From 6d26bf5c826a2bff0e37c08fb8657aae4167d467 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Fri, 16 May 2014 10:20:57 -0400 Subject: [PATCH 24/42] Groovy: .groovy is now first in the array --- lib/linguist/languages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index f4eb4d22..94d1a9c9 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -818,8 +818,8 @@ Groovy: ace_mode: groovy color: "#e69f56" extensions: - - .grt - .groovy + - .grt - .gtpl - .gvy interpreters: From 6c666075b508ffee0e3c61d050f26feeaad253d9 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Fri, 16 May 2014 10:32:41 -0400 Subject: [PATCH 25/42] Groovy: Add '.tpl' to the list of extensions. --- lib/linguist/languages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 94d1a9c9..521e8f05 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -822,6 +822,7 @@ Groovy: - .grt - .gtpl - .gvy + - .tpl interpreters: - groovy From 9b6a7622d2aeb55fcada7f502ff338c32f74b4fd Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Fri, 16 May 2014 10:37:49 -0400 Subject: [PATCH 26/42] Groovy: Remove .tpl from list --- lib/linguist/languages.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 521e8f05..94d1a9c9 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -822,7 +822,6 @@ Groovy: - .grt - .gtpl - .gvy - - .tpl interpreters: - groovy From 24fc2842d256e0b8a2fe93f486725213509d9e92 Mon Sep 17 00:00:00 2001 From: Andy Li Date: Sat, 17 May 2014 16:38:44 +0800 Subject: [PATCH 27/42] Haxe: Use haxe logo color. --- lib/linguist/languages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..d778175d 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -907,7 +907,7 @@ Haskell: Haxe: type: programming ace_mode: haxe - color: "#346d51" + color: "#f7941e" extensions: - .hx - .hxsl From 42658ffd619008e458ce01b9a8fb905829794c1d Mon Sep 17 00:00:00 2001 From: Jernej Kos Date: Mon, 19 May 2014 19:12:49 +0200 Subject: [PATCH 28/42] Added .ipp extension for C++. --- lib/linguist/languages.yml | 1 + samples/C++/epoll_reactor.ipp | 664 ++++++++++++++++++++++++++++++++++ 2 files changed, 665 insertions(+) create mode 100644 samples/C++/epoll_reactor.ipp diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..16a3c55a 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -293,6 +293,7 @@ C++: - .inl - .tcc - .tpp + - .ipp C-ObjDump: type: data diff --git a/samples/C++/epoll_reactor.ipp b/samples/C++/epoll_reactor.ipp new file mode 100644 index 00000000..5d592aff --- /dev/null +++ b/samples/C++/epoll_reactor.ipp @@ -0,0 +1,664 @@ +// +// detail/impl/epoll_reactor.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP +#define BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_EPOLL) + +#include +#include +#include +#include +#include + +#if defined(BOOST_ASIO_HAS_TIMERFD) +# include +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + +#include + +namespace boost { +namespace asio { +namespace detail { + +epoll_reactor::epoll_reactor(boost::asio::io_service& io_service) + : boost::asio::detail::service_base(io_service), + io_service_(use_service(io_service)), + mutex_(), + interrupter_(), + epoll_fd_(do_epoll_create()), + timer_fd_(do_timerfd_create()), + shutdown_(false) +{ + // Add the interrupter's descriptor to epoll. + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); + interrupter_.interrupt(); + + // Add the timer descriptor to epoll. + if (timer_fd_ != -1) + { + ev.events = EPOLLIN | EPOLLERR; + ev.data.ptr = &timer_fd_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); + } +} + +epoll_reactor::~epoll_reactor() +{ + if (epoll_fd_ != -1) + close(epoll_fd_); + if (timer_fd_ != -1) + close(timer_fd_); +} + +void epoll_reactor::shutdown_service() +{ + mutex::scoped_lock lock(mutex_); + shutdown_ = true; + lock.unlock(); + + op_queue ops; + + while (descriptor_state* state = registered_descriptors_.first()) + { + for (int i = 0; i < max_ops; ++i) + ops.push(state->op_queue_[i]); + state->shutdown_ = true; + registered_descriptors_.free(state); + } + + timer_queues_.get_all_timers(ops); + + io_service_.abandon_operations(ops); +} + +void epoll_reactor::fork_service(boost::asio::io_service::fork_event fork_ev) +{ + if (fork_ev == boost::asio::io_service::fork_child) + { + if (epoll_fd_ != -1) + ::close(epoll_fd_); + epoll_fd_ = -1; + epoll_fd_ = do_epoll_create(); + + if (timer_fd_ != -1) + ::close(timer_fd_); + timer_fd_ = -1; + timer_fd_ = do_timerfd_create(); + + interrupter_.recreate(); + + // Add the interrupter's descriptor to epoll. + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); + interrupter_.interrupt(); + + // Add the timer descriptor to epoll. + if (timer_fd_ != -1) + { + ev.events = EPOLLIN | EPOLLERR; + ev.data.ptr = &timer_fd_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); + } + + update_timeout(); + + // Re-register all descriptors with epoll. + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + for (descriptor_state* state = registered_descriptors_.first(); + state != 0; state = state->next_) + { + ev.events = state->registered_events_; + ev.data.ptr = state; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, state->descriptor_, &ev); + if (result != 0) + { + boost::system::error_code ec(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(ec, "epoll re-registration"); + } + } + } +} + +void epoll_reactor::init_task() +{ + io_service_.init_task(); +} + +int epoll_reactor::register_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + descriptor_data = allocate_descriptor_state(); + + { + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + descriptor_data->reactor_ = this; + descriptor_data->descriptor_ = descriptor; + descriptor_data->shutdown_ = false; + } + + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; + descriptor_data->registered_events_ = ev.events; + ev.data.ptr = descriptor_data; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); + if (result != 0) + return errno; + + return 0; +} + +int epoll_reactor::register_internal_descriptor( + int op_type, socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op) +{ + descriptor_data = allocate_descriptor_state(); + + { + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + descriptor_data->reactor_ = this; + descriptor_data->descriptor_ = descriptor; + descriptor_data->shutdown_ = false; + descriptor_data->op_queue_[op_type].push(op); + } + + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; + descriptor_data->registered_events_ = ev.events; + ev.data.ptr = descriptor_data; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); + if (result != 0) + return errno; + + return 0; +} + +void epoll_reactor::move_descriptor(socket_type, + epoll_reactor::per_descriptor_data& target_descriptor_data, + epoll_reactor::per_descriptor_data& source_descriptor_data) +{ + target_descriptor_data = source_descriptor_data; + source_descriptor_data = 0; +} + +void epoll_reactor::start_op(int op_type, socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op, + bool is_continuation, bool allow_speculative) +{ + if (!descriptor_data) + { + op->ec_ = boost::asio::error::bad_descriptor; + post_immediate_completion(op, is_continuation); + return; + } + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (descriptor_data->shutdown_) + { + post_immediate_completion(op, is_continuation); + return; + } + + if (descriptor_data->op_queue_[op_type].empty()) + { + if (allow_speculative + && (op_type != read_op + || descriptor_data->op_queue_[except_op].empty())) + { + if (op->perform()) + { + descriptor_lock.unlock(); + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + if (op_type == write_op) + { + if ((descriptor_data->registered_events_ & EPOLLOUT) == 0) + { + epoll_event ev = { 0, { 0 } }; + ev.events = descriptor_data->registered_events_ | EPOLLOUT; + ev.data.ptr = descriptor_data; + if (epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev) == 0) + { + descriptor_data->registered_events_ |= ev.events; + } + else + { + op->ec_ = boost::system::error_code(errno, + boost::asio::error::get_system_category()); + io_service_.post_immediate_completion(op, is_continuation); + return; + } + } + } + } + else + { + if (op_type == write_op) + { + descriptor_data->registered_events_ |= EPOLLOUT; + } + + epoll_event ev = { 0, { 0 } }; + ev.events = descriptor_data->registered_events_; + ev.data.ptr = descriptor_data; + epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev); + } + } + + descriptor_data->op_queue_[op_type].push(op); + io_service_.work_started(); +} + +void epoll_reactor::cancel_ops(socket_type, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + { + while (reactor_op* op = descriptor_data->op_queue_[i].front()) + { + op->ec_ = boost::asio::error::operation_aborted; + descriptor_data->op_queue_[i].pop(); + ops.push(op); + } + } + + descriptor_lock.unlock(); + + io_service_.post_deferred_completions(ops); +} + +void epoll_reactor::deregister_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, bool closing) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (!descriptor_data->shutdown_) + { + if (closing) + { + // The descriptor will be automatically removed from the epoll set when + // it is closed. + } + else + { + epoll_event ev = { 0, { 0 } }; + epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); + } + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + { + while (reactor_op* op = descriptor_data->op_queue_[i].front()) + { + op->ec_ = boost::asio::error::operation_aborted; + descriptor_data->op_queue_[i].pop(); + ops.push(op); + } + } + + descriptor_data->descriptor_ = -1; + descriptor_data->shutdown_ = true; + + descriptor_lock.unlock(); + + free_descriptor_state(descriptor_data); + descriptor_data = 0; + + io_service_.post_deferred_completions(ops); + } +} + +void epoll_reactor::deregister_internal_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (!descriptor_data->shutdown_) + { + epoll_event ev = { 0, { 0 } }; + epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + ops.push(descriptor_data->op_queue_[i]); + + descriptor_data->descriptor_ = -1; + descriptor_data->shutdown_ = true; + + descriptor_lock.unlock(); + + free_descriptor_state(descriptor_data); + descriptor_data = 0; + } +} + +void epoll_reactor::run(bool block, op_queue& ops) +{ + // This code relies on the fact that the task_io_service queues the reactor + // task behind all descriptor operations generated by this function. This + // means, that by the time we reach this point, any previously returned + // descriptor operations have already been dequeued. Therefore it is now safe + // for us to reuse and return them for the task_io_service to queue again. + + // Calculate a timeout only if timerfd is not used. + int timeout; + if (timer_fd_ != -1) + timeout = block ? -1 : 0; + else + { + mutex::scoped_lock lock(mutex_); + timeout = block ? get_timeout() : 0; + } + + // Block on the epoll descriptor. + epoll_event events[128]; + int num_events = epoll_wait(epoll_fd_, events, 128, timeout); + +#if defined(BOOST_ASIO_HAS_TIMERFD) + bool check_timers = (timer_fd_ == -1); +#else // defined(BOOST_ASIO_HAS_TIMERFD) + bool check_timers = true; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + + // Dispatch the waiting events. + for (int i = 0; i < num_events; ++i) + { + void* ptr = events[i].data.ptr; + if (ptr == &interrupter_) + { + // No need to reset the interrupter since we're leaving the descriptor + // in a ready-to-read state and relying on edge-triggered notifications + // to make it so that we only get woken up when the descriptor's epoll + // registration is updated. + +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ == -1) + check_timers = true; +#else // defined(BOOST_ASIO_HAS_TIMERFD) + check_timers = true; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + } +#if defined(BOOST_ASIO_HAS_TIMERFD) + else if (ptr == &timer_fd_) + { + check_timers = true; + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + else + { + // The descriptor operation doesn't count as work in and of itself, so we + // don't call work_started() here. This still allows the io_service to + // stop if the only remaining operations are descriptor operations. + descriptor_state* descriptor_data = static_cast(ptr); + descriptor_data->set_ready_events(events[i].events); + ops.push(descriptor_data); + } + } + + if (check_timers) + { + mutex::scoped_lock common_lock(mutex_); + timer_queues_.get_ready_timers(ops); + +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ != -1) + { + itimerspec new_timeout; + itimerspec old_timeout; + int flags = get_timeout(new_timeout); + timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + } +} + +void epoll_reactor::interrupt() +{ + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, interrupter_.read_descriptor(), &ev); +} + +int epoll_reactor::do_epoll_create() +{ +#if defined(EPOLL_CLOEXEC) + int fd = epoll_create1(EPOLL_CLOEXEC); +#else // defined(EPOLL_CLOEXEC) + int fd = -1; + errno = EINVAL; +#endif // defined(EPOLL_CLOEXEC) + + if (fd == -1 && (errno == EINVAL || errno == ENOSYS)) + { + fd = epoll_create(epoll_size); + if (fd != -1) + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + } + + if (fd == -1) + { + boost::system::error_code ec(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(ec, "epoll"); + } + + return fd; +} + +int epoll_reactor::do_timerfd_create() +{ +#if defined(BOOST_ASIO_HAS_TIMERFD) +# if defined(TFD_CLOEXEC) + int fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); +# else // defined(TFD_CLOEXEC) + int fd = -1; + errno = EINVAL; +# endif // defined(TFD_CLOEXEC) + + if (fd == -1 && errno == EINVAL) + { + fd = timerfd_create(CLOCK_MONOTONIC, 0); + if (fd != -1) + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + } + + return fd; +#else // defined(BOOST_ASIO_HAS_TIMERFD) + return -1; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) +} + +epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state() +{ + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + return registered_descriptors_.alloc(); +} + +void epoll_reactor::free_descriptor_state(epoll_reactor::descriptor_state* s) +{ + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + registered_descriptors_.free(s); +} + +void epoll_reactor::do_add_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.insert(&queue); +} + +void epoll_reactor::do_remove_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.erase(&queue); +} + +void epoll_reactor::update_timeout() +{ +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ != -1) + { + itimerspec new_timeout; + itimerspec old_timeout; + int flags = get_timeout(new_timeout); + timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); + return; + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + interrupt(); +} + +int epoll_reactor::get_timeout() +{ + // By default we will wait no longer than 5 minutes. This will ensure that + // any changes to the system clock are detected after no longer than this. + return timer_queues_.wait_duration_msec(5 * 60 * 1000); +} + +#if defined(BOOST_ASIO_HAS_TIMERFD) +int epoll_reactor::get_timeout(itimerspec& ts) +{ + ts.it_interval.tv_sec = 0; + ts.it_interval.tv_nsec = 0; + + long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000); + ts.it_value.tv_sec = usec / 1000000; + ts.it_value.tv_nsec = usec ? (usec % 1000000) * 1000 : 1; + + return usec ? 0 : TFD_TIMER_ABSTIME; +} +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + +struct epoll_reactor::perform_io_cleanup_on_block_exit +{ + explicit perform_io_cleanup_on_block_exit(epoll_reactor* r) + : reactor_(r), first_op_(0) + { + } + + ~perform_io_cleanup_on_block_exit() + { + if (first_op_) + { + // Post the remaining completed operations for invocation. + if (!ops_.empty()) + reactor_->io_service_.post_deferred_completions(ops_); + + // A user-initiated operation has completed, but there's no need to + // explicitly call work_finished() here. Instead, we'll take advantage of + // the fact that the task_io_service will call work_finished() once we + // return. + } + else + { + // No user-initiated operations have completed, so we need to compensate + // for the work_finished() call that the task_io_service will make once + // this operation returns. + reactor_->io_service_.work_started(); + } + } + + epoll_reactor* reactor_; + op_queue ops_; + operation* first_op_; +}; + +epoll_reactor::descriptor_state::descriptor_state() + : operation(&epoll_reactor::descriptor_state::do_complete) +{ +} + +operation* epoll_reactor::descriptor_state::perform_io(uint32_t events) +{ + mutex_.lock(); + perform_io_cleanup_on_block_exit io_cleanup(reactor_); + mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock); + + // Exception operations must be processed first to ensure that any + // out-of-band data is read before normal data. + static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI }; + for (int j = max_ops - 1; j >= 0; --j) + { + if (events & (flag[j] | EPOLLERR | EPOLLHUP)) + { + while (reactor_op* op = op_queue_[j].front()) + { + if (op->perform()) + { + op_queue_[j].pop(); + io_cleanup.ops_.push(op); + } + else + break; + } + } + } + + // The first operation will be returned for completion now. The others will + // be posted for later by the io_cleanup object's destructor. + io_cleanup.first_op_ = io_cleanup.ops_.front(); + io_cleanup.ops_.pop(); + return io_cleanup.first_op_; +} + +void epoll_reactor::descriptor_state::do_complete( + io_service_impl* owner, operation* base, + const boost::system::error_code& ec, std::size_t bytes_transferred) +{ + if (owner) + { + descriptor_state* descriptor_data = static_cast(base); + uint32_t events = static_cast(bytes_transferred); + if (operation* op = descriptor_data->perform_io(events)) + { + op->complete(*owner, ec, 0); + } + } +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_EPOLL) + +#endif // BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP From 85efbde3f769d3fb8da98b294afec81e07d5814d Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Wed, 21 May 2014 11:44:18 -0400 Subject: [PATCH 29/42] Counts the number of lines correctly for files with certain multibyte encodings --- lib/linguist/blob_helper.rb | 5 +++-- samples/Text/utf16le-windows.txt | Bin 0 -> 40 bytes samples/Text/utf16le.txt | Bin 0 -> 36 bytes test/test_blob.rb | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 samples/Text/utf16le-windows.txt create mode 100644 samples/Text/utf16le.txt diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index 37793a36..8aa96ed4 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -241,7 +241,8 @@ module Linguist def lines @lines ||= if viewable? && data - data.split(/\r\n|\r|\n/, -1) + newlines = Regexp.new("\r\n|\r|\n".encode(encoding)) + data.force_encoding(encoding).split(newlines, -1) else [] end @@ -262,7 +263,7 @@ module Linguist # # Returns Integer def sloc - lines.grep(/\S/).size + lines.grep(Regexp.new('\S'.encode(encoding))).size end # Public: Is the blob a generated file? diff --git a/samples/Text/utf16le-windows.txt b/samples/Text/utf16le-windows.txt new file mode 100644 index 0000000000000000000000000000000000000000..590ae2a63f89c45e1118a554a8f6c0b27c5a6873 GIT binary patch literal 40 ecmezWFNYzMA&()I!H|KMfr|mgGeY4RGXMa@90$4p literal 0 HcmV?d00001 diff --git a/samples/Text/utf16le.txt b/samples/Text/utf16le.txt new file mode 100644 index 0000000000000000000000000000000000000000..1829ef7099c936f6ebfe92fa033a517a133ae6e4 GIT binary patch literal 36 ccmezWFNYzMA&()I!H|KA0me2$VjD960It>tpa1{> literal 0 HcmV?d00001 diff --git a/test/test_blob.rb b/test/test_blob.rb index ec1443ad..890242b6 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -77,12 +77,15 @@ class TestBlob < Test::Unit::TestCase def test_sloc assert_equal 2, blob("Ruby/foo.rb").sloc + assert_equal 3, blob("Text/utf16le-windows.txt").sloc end def test_encoding assert_equal "ISO-8859-2", blob("Text/README").encoding assert_equal "ISO-8859-1", blob("Text/dump.sql").encoding assert_equal "UTF-8", blob("Text/foo.txt").encoding + assert_equal "UTF-16LE", blob("Text/utf16le.txt").encoding + assert_equal "UTF-16LE", blob("Text/utf16le-windows.txt").encoding assert_nil blob("Binary/dog.o").encoding end From 185db0e8d5553067e394a230fc6453728f55e795 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Wed, 21 May 2014 11:59:48 -0400 Subject: [PATCH 30/42] Makes sure we do not fail if encoding == nil It looks like it's valid to call this method even if `binary?` is true. Encoding as 'ASCII-8BIT' should always succeed. --- lib/linguist/blob_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index 8aa96ed4..9ab8d2c5 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -263,7 +263,7 @@ module Linguist # # Returns Integer def sloc - lines.grep(Regexp.new('\S'.encode(encoding))).size + lines.grep(Regexp.new('\S'.encode(encoding || 'ASCII-8BIT'))).size end # Public: Is the blob a generated file? From 09a33f8daad0b3d0584466324999b00414feb732 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Wed, 21 May 2014 15:11:06 -0400 Subject: [PATCH 31/42] Takes a different approach --- lib/linguist/blob_helper.rb | 23 ++++++++++++++++++++--- test/test_blob.rb | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index 9ab8d2c5..76eab7ea 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -241,8 +241,25 @@ module Linguist def lines @lines ||= if viewable? && data - newlines = Regexp.new("\r\n|\r|\n".encode(encoding)) - data.force_encoding(encoding).split(newlines, -1) + # `data` is usually encoded as ASCII-8BIT even when the content has + # been detected as a different encoding. However, we are not allowed + # to change the encoding of `data` because we've made the implicit + # guarantee that each entry in `lines` is encoded the same way as + # `data`. + # + # Instead, we re-encode each possible newline sequence as the + # detected encoding, then force them back to the encoding of `data` + # (usually a binary encoding like ASCII-8BIT). This means that the + # byte sequence will match how newlines are likely encoded in the + # file, but we don't have to change the encoding of `data` as far as + # Ruby is concerned. This allows us to correctly parse out each line + # without changing the encoding of `data`, and + # also--importantly--without having to duplicate many (potentially + # large) strings. + encoded_newlines = ["\r\n", "\r", "\n"]. + map { |nl| nl.encode(encoding).force_encoding(data.encoding) } + + data.split(Regexp.union(encoded_newlines), -1) else [] end @@ -263,7 +280,7 @@ module Linguist # # Returns Integer def sloc - lines.grep(Regexp.new('\S'.encode(encoding || 'ASCII-8BIT'))).size + lines.grep(/\S/).size end # Public: Is the blob a generated file? diff --git a/test/test_blob.rb b/test/test_blob.rb index 890242b6..da13b96e 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -11,6 +11,17 @@ class TestBlob < Test::Unit::TestCase Lexer = Pygments::Lexer + def setup + # git blobs are normally loaded as ASCII-8BIT since they may contain data + # with arbitrary encoding not known ahead of time + @original_external = Encoding.default_external + Encoding.default_external = Encoding.find("ASCII-8BIT") + end + + def teardown + Encoding.default_external = @original_external + end + def samples_path File.expand_path("../../samples", __FILE__) end @@ -67,6 +78,14 @@ class TestBlob < Test::Unit::TestCase assert_equal 475, blob("Emacs Lisp/ess-julia.el").lines.length end + def test_lines_maintains_original_encoding + # Even if the file's encoding is detected as something like UTF-16LE, + # earlier versions of the gem made implicit guarantees that the encoding of + # each `line` is in the same encoding as the file was originally read (in + # practice, UTF-8 or ASCII-8BIT) + assert_equal Encoding.default_external, blob("Text/utf16le.txt").lines.first.encoding + end + def test_size assert_equal 15, blob("Ruby/foo.rb").size end From f5895216a86bdc4743e8363d8b8120f007ea84ff Mon Sep 17 00:00:00 2001 From: Christian Bundy Date: Wed, 21 May 2014 12:30:30 -0700 Subject: [PATCH 32/42] Update NuGet regex to be more specific Change NuGet regex to look for packages that end with a period and 1+ digits, as NuGet always appends a version number to the end of packages. --- lib/linguist/vendor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/vendor.yml b/lib/linguist/vendor.yml index 1380cdcb..51383984 100644 --- a/lib/linguist/vendor.yml +++ b/lib/linguist/vendor.yml @@ -148,7 +148,7 @@ - (^|/)[Mm]icrosoft([Mm]vc)?([Aa]jax|[Vv]alidation)(\.debug)?\.js$ # NuGet -- ^[Pp]ackages/ +- ^[Pp]ackages\/.+\.\d+\/ # ExtJS - (^|/)extjs/.*?\.js$ From 9a3c9a8c19b385db5357792076f28c32b7b12dd2 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Thu, 22 May 2014 11:29:03 -0400 Subject: [PATCH 33/42] Bumps to 2.11.1 --- lib/linguist/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/version.rb b/lib/linguist/version.rb index af988b67..d7627292 100644 --- a/lib/linguist/version.rb +++ b/lib/linguist/version.rb @@ -1,3 +1,3 @@ module Linguist - VERSION = "2.11.0" + VERSION = "2.11.1" end From 8d16a3365e0fa2e52911b50236b3be1a6f9e4140 Mon Sep 17 00:00:00 2001 From: James Keirstead Date: Wed, 21 May 2014 14:34:35 +0100 Subject: [PATCH 34/42] Added documentation format to R language --- lib/linguist/languages.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..a0744c92 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1698,6 +1698,8 @@ R: extensions: - .r - .R + - .Rd + - .rd - .rsx filenames: - .Rprofile From 1a98ccbf5f439e70215c24db7101421bfa2f9da7 Mon Sep 17 00:00:00 2001 From: James Keirstead Date: Wed, 21 May 2014 14:40:38 +0100 Subject: [PATCH 35/42] Added an example Rd file from the scholar package --- samples/R/scholar.Rd | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 samples/R/scholar.Rd diff --git a/samples/R/scholar.Rd b/samples/R/scholar.Rd new file mode 100644 index 00000000..8a593b38 --- /dev/null +++ b/samples/R/scholar.Rd @@ -0,0 +1,25 @@ +\docType{package} +\name{scholar} +\alias{scholar} +\alias{scholar-package} +\title{scholar} +\source{ + The package reads data from + \url{http://scholar.google.com}. Dates and citation + counts are estimated and are determined automatically by + a computer program. Use at your own risk. +} +\description{ + The \code{scholar} package provides functions to extract + citation data from Google Scholar. There are also + convenience functions for comparing multiple scholars and + predicting h-index scores based on past publication + records. +} +\note{ + A complementary set of Google Scholar functions can be + found at + \url{http://biostat.jhsph.edu/~jleek/code/googleCite.r}. + The \code{scholar} package was developed independently. +} + From b7dad4df5e49f19598f09b606f6fd9d50a37a4bd Mon Sep 17 00:00:00 2001 From: felixphew Date: Mon, 26 May 2014 06:55:37 +1000 Subject: [PATCH 36/42] Add .mkdn as a Markdown extension --- lib/linguist/languages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..6b94d3cf 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1250,6 +1250,7 @@ Markdown: - .md - .markdown - .mkd + - .mkdn - .mkdown - .ron From 41da8c63522a73852e5b1ee10f4e794af05dad7d Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 27 May 2014 05:50:40 -0500 Subject: [PATCH 37/42] SQL -> data --- lib/linguist/languages.yml | 2 +- test/test_language.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 7350bb2a..11eb29aa 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1850,7 +1850,7 @@ SCSS: - .scss SQL: - type: programming + type: data ace_mode: sql extensions: - .sql diff --git a/test/test_language.rb b/test/test_language.rb index 10c5f9a2..b84df02d 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -214,7 +214,7 @@ class TestLanguage < Test::Unit::TestCase def test_searchable assert Language['Ruby'].searchable? assert !Language['Gettext Catalog'].searchable? - assert Language['SQL'].searchable? + assert !Language['SQL'].searchable? end def test_find_by_name From 8215b225d92aa2654ffd8eaf9e275020d9d0ef30 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 27 May 2014 05:54:44 -0500 Subject: [PATCH 38/42] Searchable --- test/test_language.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_language.rb b/test/test_language.rb index b84df02d..10c5f9a2 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -214,7 +214,7 @@ class TestLanguage < Test::Unit::TestCase def test_searchable assert Language['Ruby'].searchable? assert !Language['Gettext Catalog'].searchable? - assert !Language['SQL'].searchable? + assert Language['SQL'].searchable? end def test_find_by_name From adbf4f6b171cca9256d3f7927d571e22984efe1c Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Fri, 30 May 2014 15:33:36 -0500 Subject: [PATCH 39/42] Samples update --- lib/linguist/samples.json | 336 +++++++++++++++++++++++++++++--------- 1 file changed, 256 insertions(+), 80 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index dfabe80e..106ae552 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -61,7 +61,8 @@ ".cpp", ".h", ".hpp", - ".inl" + ".inl", + ".ipp" ], "Ceylon": [ ".ceylon" @@ -702,8 +703,8 @@ ".gemrc" ] }, - "tokens_total": 607168, - "languages_total": 739, + "tokens_total": 609432, + "languages_total": 740, "tokens": { "ABAP": { "*/**": 1, @@ -9853,23 +9854,23 @@ "C++": { "class": 40, "Bar": 2, - "{": 629, + "{": 726, "protected": 4, "char": 127, "*name": 6, - ";": 2564, + ";": 2783, "public": 33, - "void": 226, + "void": 241, "hello": 2, - "(": 2853, - ")": 2855, - "}": 629, - "//": 292, + "(": 3102, + ")": 3105, + "}": 726, + "//": 315, "///": 843, "mainpage": 1, "C": 6, "library": 14, - "for": 98, + "for": 105, "Broadcom": 3, "BCM": 14, "as": 28, @@ -9918,7 +9919,7 @@ "SPI": 44, "I2C": 29, "accessing": 2, - "system": 9, + "system": 13, "timers.": 1, "Pin": 65, "event": 3, @@ -9929,13 +9930,13 @@ "interrupts": 1, "are": 36, "not": 29, - "+": 70, + "+": 80, "compatible": 1, "installs": 1, "header": 7, "file": 31, "non": 2, - "-": 360, + "-": 438, "shared": 2, "any": 23, "Linux": 2, @@ -9953,7 +9954,7 @@ "of": 215, "package": 1, "that": 36, - "this": 55, + "this": 57, "documentation": 3, "refers": 1, "be": 35, @@ -10027,7 +10028,7 @@ "determined": 1, "suspect": 1, "an": 23, - "interrupt": 1, + "interrupt": 3, "handler": 1, "hitting": 1, "hard": 1, @@ -10105,7 +10106,7 @@ "Ennnnnn": 1, "available": 6, "nnnnnn.": 1, - "base": 6, + "base": 8, "registers": 12, "following": 2, "externals": 1, @@ -10177,7 +10178,7 @@ "SPI.": 1, "While": 1, "able": 2, - "state": 22, + "state": 33, "through": 4, "bcm2835_spi_gpio_write": 1, "bcm2835_spi_end": 4, @@ -10198,7 +10199,7 @@ "referred": 1, "I": 4, "//en.wikipedia.org/wiki/I": 1, - "%": 6, + "%": 7, "C2": 1, "B2C": 1, "V2": 2, @@ -10211,7 +10212,7 @@ "user": 3, "i.e.": 1, "they": 2, - "run": 1, + "run": 2, "Such": 1, "part": 1, "kernel": 4, @@ -10219,7 +10220,7 @@ "subject": 1, "paging": 1, "swapping": 2, - "while": 13, + "while": 17, "does": 4, "things": 1, "besides": 1, @@ -10239,7 +10240,7 @@ "guarantee": 1, "bcm2835_delay": 5, "bcm2835_delayMicroseconds": 6, - "return": 221, + "return": 240, "exactly": 2, "requested.": 1, "fact": 2, @@ -10264,11 +10265,11 @@ "reports": 1, "prevent": 4, "fragment": 2, - "struct": 12, + "struct": 13, "sched_param": 1, "sp": 4, "memset": 3, - "&": 161, + "&": 203, "sizeof": 15, "sp.sched_priority": 1, "sched_get_priority_max": 1, @@ -10276,7 +10277,7 @@ "sched_setscheduler": 1, "mlockall": 1, "MCL_CURRENT": 1, - "|": 19, + "|": 40, "MCL_FUTURE": 1, "Open": 2, "Source": 2, @@ -10284,7 +10285,7 @@ "GPL": 2, "appropriate": 7, "option": 1, - "if": 316, + "if": 359, "want": 5, "share": 2, "source": 12, @@ -10395,7 +10396,7 @@ "need": 6, "link": 3, "version.": 1, - "s": 24, + "s": 26, "doc": 1, "Also": 1, "added": 2, @@ -10429,7 +10430,7 @@ "compiles": 1, "even": 2, "CLOCK_MONOTONIC_RAW": 1, - "CLOCK_MONOTONIC": 1, + "CLOCK_MONOTONIC": 3, "instead.": 1, "errors": 1, "divider": 15, @@ -10477,7 +10478,7 @@ "olly.": 1, "Patch": 2, "Dootson": 2, - "close": 3, + "close": 7, "/dev/mem": 4, "granted.": 1, "susceptible": 1, @@ -10504,7 +10505,7 @@ "completing.": 1, "Patched": 1, "p": 6, - "[": 276, + "[": 293, "atched": 1, "his": 1, "submitted": 1, @@ -10533,10 +10534,10 @@ "DIRECTLY": 1, "USE": 1, "LISTS": 1, - "#ifndef": 28, + "#ifndef": 29, "BCM2835_H": 3, - "#define": 342, - "#include": 121, + "#define": 343, + "#include": 129, "": 2, "defgroup": 7, "constants": 1, @@ -10546,16 +10547,16 @@ "here": 1, "@": 14, "HIGH": 12, - "true": 41, + "true": 49, "volts": 2, "pin.": 21, - "false": 45, + "false": 48, "Speed": 1, "core": 1, "clock": 21, "core_clk": 1, "BCM2835_CORE_CLK_HZ": 1, - "<": 250, + "<": 255, "Base": 17, "Address": 10, "BCM2835_PERI_BASE": 9, @@ -10580,7 +10581,7 @@ "bcm2835_init": 11, "extern": 72, "volatile": 13, - "uint32_t": 37, + "uint32_t": 39, "*bcm2835_st": 1, "*bcm2835_gpio": 1, "*bcm2835_pwm": 1, @@ -10594,7 +10595,7 @@ "page": 5, "BCM2835_PAGE_SIZE": 1, "*1024": 2, - "block": 4, + "block": 7, "BCM2835_BLOCK_SIZE": 1, "offsets": 2, "BCM2835_GPIO_BASE.": 1, @@ -10969,10 +10970,10 @@ "BCM2835_BSC_C_READ": 1, "BCM2835_BSC_S_CLKT": 1, "stretch": 1, - "timeout": 1, + "timeout": 5, "BCM2835_BSC_S_ERR": 1, "ACK": 1, - "error": 2, + "error": 8, "BCM2835_BSC_S_RXF": 1, "BCM2835_BSC_S_TXE": 1, "TXE": 1, @@ -11003,7 +11004,7 @@ "BCM2835_I2C_REASON_ERROR_CLKT": 1, "BCM2835_I2C_REASON_ERROR_DATA": 1, "sent": 1, - "/": 15, + "/": 16, "BCM2835_ST_CS": 1, "Control/Status": 1, "BCM2835_ST_CLO": 1, @@ -11044,7 +11045,7 @@ "BCM2835_PWM0_SERIAL": 1, "BCM2835_PWM0_ENABLE": 1, "x": 86, - "#endif": 98, + "#endif": 110, "#ifdef": 19, "__cplusplus": 12, "init": 2, @@ -11062,7 +11063,7 @@ "bcm2835_set_debug": 2, "fails": 1, "returning": 1, - "result": 2, + "result": 8, "crashes": 1, "failures.": 1, "Prints": 1, @@ -11071,12 +11072,12 @@ "case": 34, "errors.": 1, "successful": 2, - "else": 50, - "int": 192, + "else": 58, + "int": 218, "Close": 1, "deallocating": 1, "allocated": 2, - "closing": 1, + "closing": 3, "Sets": 24, "debug": 6, "prevents": 1, @@ -11092,7 +11093,7 @@ "operation.": 2, "Call": 2, "param": 72, - "]": 275, + "]": 292, "level.": 3, "uint8_t": 43, "lowlevel": 2, @@ -11166,7 +11167,7 @@ "Tests": 1, "detected": 7, "requested": 1, - "flag": 1, + "flag": 3, "bcm2835_gpio_set_eds": 2, "status": 1, "th": 1, @@ -11268,7 +11269,7 @@ "Forces": 2, "ALT0": 2, "funcitons": 1, - "complete": 2, + "complete": 3, "End": 2, "returned": 5, "INPUT": 2, @@ -11320,7 +11321,7 @@ "placed": 1, "rbuf.": 1, "rbuf": 3, - "long": 14, + "long": 15, "tbuf": 4, "Buffer": 10, "send.": 5, @@ -11364,8 +11365,8 @@ "course": 2, "nothing": 1, "driver": 1, - "const": 170, - "*": 177, + "const": 172, + "*": 183, "receive.": 2, "received.": 2, "Allows": 2, @@ -11411,8 +11412,8 @@ "": 4, "": 4, "": 2, - "namespace": 32, - "std": 52, + "namespace": 38, + "std": 53, "DEFAULT_DELIMITER": 1, "CsvStreamer": 5, "private": 16, @@ -11460,7 +11461,7 @@ "leading/trailing": 1, "spaces": 3, "trimmed": 1, - "bool": 105, + "bool": 111, "Like": 1, "specify": 1, "trim": 2, @@ -11477,7 +11478,7 @@ "": 1, "": 1, "": 2, - "static": 262, + "static": 263, "Env": 13, "*env_instance": 1, "NULL": 109, @@ -11509,6 +11510,202 @@ "": 1, "Q_OBJECT": 1, "*instance": 1, + "BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP": 3, + "#if": 63, + "defined": 49, + "_MSC_VER": 7, + "&&": 29, + "": 1, + "BOOST_ASIO_HAS_EPOLL": 2, + "": 1, + "": 1, + "": 1, + "": 1, + "": 1, + "BOOST_ASIO_HAS_TIMERFD": 19, + "": 1, + "boost": 18, + "asio": 14, + "detail": 5, + "epoll_reactor": 40, + "io_service": 6, + "service_base": 1, + "": 1, + "io_service_": 1, + "use_service": 1, + "": 1, + "mutex_": 13, + "interrupter_": 5, + "epoll_fd_": 20, + "do_epoll_create": 3, + "timer_fd_": 21, + "do_timerfd_create": 3, + "shutdown_": 10, + "epoll_event": 10, + "ev": 21, + "ev.events": 13, + "EPOLLIN": 8, + "EPOLLERR": 8, + "EPOLLET": 5, + "ev.data.ptr": 10, + "epoll_ctl": 12, + "EPOLL_CTL_ADD": 7, + "interrupter_.read_descriptor": 3, + "interrupter_.interrupt": 2, + "shutdown_service": 1, + "mutex": 16, + "scoped_lock": 16, + "lock": 5, + "lock.unlock": 1, + "op_queue": 6, + "": 6, + "ops": 10, + "descriptor_state*": 6, + "registered_descriptors_.first": 2, + "i": 106, + "max_ops": 6, + "ops.push": 5, + "op_queue_": 12, + "registered_descriptors_.free": 2, + "timer_queues_.get_all_timers": 1, + "io_service_.abandon_operations": 1, + "fork_service": 1, + "fork_event": 1, + "fork_ev": 2, + "fork_child": 1, + "interrupter_.recreate": 1, + "update_timeout": 2, + "descriptors_lock": 3, + "registered_descriptors_mutex_": 3, + "next_": 3, + "registered_events_": 8, + "descriptor_": 5, + "error_code": 4, + "ec": 6, + "errno": 10, + "get_system_category": 3, + "throw_error": 2, + "init_task": 1, + "io_service_.init_task": 1, + "register_descriptor": 1, + "socket_type": 7, + "descriptor": 15, + "per_descriptor_data": 8, + "descriptor_data": 60, + "allocate_descriptor_state": 3, + "descriptor_lock": 7, + "reactor_": 7, + "EPOLLHUP": 3, + "EPOLLPRI": 3, + "register_internal_descriptor": 1, + "op_type": 8, + "reactor_op*": 5, + "op": 28, + ".push": 2, + "move_descriptor": 1, + "target_descriptor_data": 2, + "source_descriptor_data": 3, + "start_op": 1, + "is_continuation": 5, + "allow_speculative": 2, + "ec_": 4, + "bad_descriptor": 1, + "post_immediate_completion": 2, + ".empty": 5, + "read_op": 1, + "||": 19, + "except_op": 1, + "perform": 2, + "descriptor_lock.unlock": 4, + "io_service_.post_immediate_completion": 2, + "write_op": 2, + "EPOLLOUT": 4, + "EPOLL_CTL_MOD": 3, + "io_service_.work_started": 2, + "cancel_ops": 1, + ".front": 3, + "operation_aborted": 2, + ".pop": 3, + "io_service_.post_deferred_completions": 3, + "deregister_descriptor": 1, + "EPOLL_CTL_DEL": 2, + "free_descriptor_state": 3, + "deregister_internal_descriptor": 1, + "get_timeout": 5, + "events": 8, + "num_events": 2, + "epoll_wait": 1, + "check_timers": 6, + "#else": 35, + "void*": 2, + "ptr": 6, + ".data.ptr": 1, + "static_cast": 14, + "": 2, + "set_ready_events": 1, + ".events": 1, + "common_lock": 1, + "timer_queues_.get_ready_timers": 1, + "itimerspec": 5, + "new_timeout": 6, + "old_timeout": 4, + "flags": 4, + "timerfd_settime": 2, + "EPOLL_CLOEXEC": 4, + "fd": 15, + "epoll_create1": 1, + "EINVAL": 4, + "ENOSYS": 1, + "epoll_create": 1, + "epoll_size": 1, + "fcntl": 2, + "F_SETFD": 2, + "FD_CLOEXEC": 2, + "timerfd_create": 2, + "TFD_CLOEXEC": 1, + "registered_descriptors_.alloc": 1, + "do_add_timer_queue": 1, + "timer_queue_base": 2, + "queue": 4, + "timer_queues_.insert": 1, + "do_remove_timer_queue": 1, + "timer_queues_.erase": 1, + "timer_queues_.wait_duration_msec": 1, + "ts": 1, + "ts.it_interval.tv_sec": 1, + "ts.it_interval.tv_nsec": 1, + "usec": 5, + "timer_queues_.wait_duration_usec": 1, + "ts.it_value.tv_sec": 1, + "ts.it_value.tv_nsec": 1, + "TFD_TIMER_ABSTIME": 1, + "perform_io_cleanup_on_block_exit": 4, + "explicit": 5, + "epoll_reactor*": 2, + "r": 38, + "first_op_": 3, + "ops_.empty": 1, + "ops_": 2, + "operation*": 4, + "descriptor_state": 5, + "operation": 2, + "do_complete": 2, + "perform_io": 2, + "mutex_.lock": 1, + "io_cleanup": 1, + "adopt_lock": 1, + "j": 10, + "io_cleanup.ops_.push": 1, + "break": 35, + "io_cleanup.first_op_": 2, + "io_cleanup.ops_.front": 1, + "io_cleanup.ops_.pop": 1, + "io_service_impl*": 1, + "owner": 3, + "size_t": 6, + "bytes_transferred": 2, + "": 1, + "": 1, "Field": 2, "Free": 1, "Black": 1, @@ -11622,7 +11819,6 @@ "*rr": 1, "*zero": 1, "n": 28, - "i": 83, "BN_CTX_start": 1, "BN_CTX_get": 8, "EC_GROUP_get_order": 1, @@ -11630,7 +11826,6 @@ "BN_mul_word": 1, "BN_add": 1, "ecsig": 3, - "r": 36, "EC_GROUP_get_curve_GFp": 1, "BN_cmp": 1, "R": 6, @@ -11688,13 +11883,11 @@ "nBitsR": 3, "BN_num_bits": 2, "nBitsS": 3, - "&&": 24, "nRecId": 4, "<4;>": 1, "keyRec": 5, "1": 4, "GetPubKey": 5, - "break": 34, "BN_bn2bin": 2, "/8": 2, "ECDSA_SIG_free": 2, @@ -11722,7 +11915,6 @@ "": 1, "": 1, "runtime_error": 2, - "explicit": 4, "str": 2, "CKeyID": 5, "uint160": 8, @@ -11741,7 +11933,6 @@ "vchPubKey.begin": 1, "vchPubKey.end": 1, "vchPubKey.size": 3, - "||": 17, "IsCompressed": 2, "Raw": 1, "secure_allocator": 2, @@ -11764,7 +11955,6 @@ "//#define": 1, "DEBUG": 5, "dout": 2, - "#else": 31, "cerr": 1, "libcanister": 2, "//the": 8, @@ -11871,7 +12061,6 @@ "getFile": 1, "otherwise": 1, "overwrites": 1, - "operation": 1, "succeeded": 2, "writeFile": 2, "//get": 1, @@ -11894,7 +12083,6 @@ "dFlush": 1, "Q_OS_LINUX": 2, "": 1, - "#if": 52, "QT_VERSION": 1, "QT_VERSION_CHECK": 1, "#error": 9, @@ -11956,7 +12144,6 @@ "sse": 1, "cvttss2si": 2, "OG_ASM_MSVC": 4, - "defined": 23, "OG_FTOI_USE_SSE": 2, "SysInfo": 2, "cpu.general.SSE": 2, @@ -11974,7 +12161,6 @@ "cast": 7, "why": 3, "did": 3, - "static_cast": 11, "": 3, "FtoiFast": 2, "Ftol": 1, @@ -12052,7 +12238,6 @@ "edx": 2, "fstp": 2, "dword": 2, - "ptr": 2, "asm": 1, "Deg2Rad": 1, "DEG_TO_RAD": 1, @@ -12191,7 +12376,6 @@ "OnShutdown": 1, "StaticDescriptorInitializer_protocol_2dbuffer_2eproto": 2, "static_descriptor_initializer_protocol_2dbuffer_2eproto_": 1, - "_MSC_VER": 3, "kNameFieldNumber": 2, "Message": 7, "SharedCtor": 4, @@ -12204,7 +12388,6 @@ "SetCachedSize": 2, "GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN": 2, "GOOGLE_SAFE_CONCURRENT_WRITES_END": 2, - "descriptor": 2, "*default_instance_": 1, "Person*": 7, "xffu": 3, @@ -12240,7 +12423,6 @@ "SERIALIZE": 2, "WriteString": 1, "unknown_fields": 7, - ".empty": 3, "SerializeUnknownFields": 1, "uint8*": 4, "SerializeWithCachedSizesToArray": 2, @@ -12295,7 +12477,6 @@ "UnknownFieldSet*": 1, "GetCachedSize": 1, "clear_name": 2, - "size_t": 5, "release_name": 2, "set_allocated_name": 2, "set_has_name": 7, @@ -12726,7 +12907,6 @@ "c0_": 64, "d": 8, "HexValue": 2, - "j": 4, "PushBack": 8, "Advance": 44, "STATIC_ASSERT": 5, @@ -12747,7 +12927,6 @@ "BIT_NOT": 2, "Next": 3, "current_": 2, - "next_": 2, "has_multiline_comment_before_next_": 5, "token": 64, "": 1, @@ -13002,7 +13181,6 @@ "QtMsgType": 1, "dump_path": 1, "minidump_id": 1, - "void*": 1, "context": 8, "QVariant": 1, "coffee2js": 1, @@ -13075,7 +13253,6 @@ "FLAG_random_seed": 2, "val": 3, "ScopedLock": 1, - "lock": 1, "entropy_mutex.Pointer": 1, "random": 1, "random_base": 3, @@ -13184,7 +13361,6 @@ "PY_VERSION_HEX": 9, "METH_COEXIST": 1, "PyDict_CheckExact": 1, - "op": 6, "Py_TYPE": 4, "PyDict_Type": 1, "PyDict_Contains": 1, @@ -65501,7 +65677,7 @@ "Brightscript": 579, "C": 59053, "C#": 278, - "C++": 32475, + "C++": 34739, "Ceylon": 50, "Cirru": 244, "Clojure": 510, @@ -65682,7 +65858,7 @@ "Brightscript": 1, "C": 29, "C#": 2, - "C++": 28, + "C++": 29, "Ceylon": 1, "Cirru": 9, "Clojure": 7, @@ -65845,5 +66021,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "dfced8ef9ddd9813d2982dc25a5468fa" + "md5": "f4510eb529137f1b68e1dfc1b11b05d4" } \ No newline at end of file From 72fab07a145eb16c58579ccd87567d080e1b44ec Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Fri, 30 May 2014 15:37:38 -0500 Subject: [PATCH 40/42] Text only --- lib/linguist/languages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index f8cb9b6b..69a9c1c8 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1600,6 +1600,7 @@ Rust: SAS: type: programming color: "#1E90FF" + lexer: Text only primary_extension: .sas SCSS: From de14b755176d8dfa37a6e3644f824f866f200ae6 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Fri, 30 May 2014 15:59:30 -0500 Subject: [PATCH 41/42] Samples update --- lib/linguist/samples.json | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index 0105d5d5..fb786e8a 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -184,6 +184,9 @@ ], "Groovy": [ ".gradle", + ".grt", + ".gtpl", + ".gvy", ".script!" ], "Groovy Server Pages": [ @@ -706,8 +709,8 @@ ".gemrc" ] }, - "tokens_total": 609525, - "languages_total": 742, + "tokens_total": 609549, + "languages_total": 745, "tokens": { "ABAP": { "*/**": 1, @@ -25006,7 +25009,7 @@ "echoDirListViaAntBuilder": 1, "(": 7, ")": 7, - "{": 3, + "{": 9, "description": 1, "//Docs": 1, "http": 1, @@ -25034,7 +25037,7 @@ "ant.fileScanner": 1, "fileset": 1, "dir": 1, - "}": 3, + "}": 9, ".each": 1, "//Print": 1, "each": 1, @@ -25045,10 +25048,16 @@ "CWD": 1, "projectDir": 1, "removed.": 1, - "println": 2, + "println": 3, "it.toString": 1, "-": 1, - "SHEBANG#!groovy": 1 + "SHEBANG#!groovy": 2, + "html": 3, + "head": 2, + "component": 1, + "title": 2, + "body": 1, + "p": 1 }, "Groovy Server Pages": { "": 4, @@ -65760,7 +65769,7 @@ "Gnuplot": 1023, "Gosu": 410, "Grammatical Framework": 10607, - "Groovy": 69, + "Groovy": 93, "Groovy Server Pages": 91, "Haml": 4, "Handlebars": 69, @@ -65942,7 +65951,7 @@ "Gnuplot": 6, "Gosu": 4, "Grammatical Framework": 41, - "Groovy": 2, + "Groovy": 5, "Groovy Server Pages": 4, "Haml": 1, "Handlebars": 2, @@ -66073,5 +66082,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "6c7340160a54d81861421a839c22ab03" + "md5": "3e0640ef27fe27b6aa5485ab50880dcd" } \ No newline at end of file From 5544a041ce42bbf9ccdac9f90f9f32d8d53b83fc Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Fri, 30 May 2014 16:11:01 -0500 Subject: [PATCH 42/42] Samples update --- lib/linguist/samples.json | 108 ++++++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 28 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index fb786e8a..89d40492 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -449,6 +449,7 @@ ], "R": [ ".R", + ".Rd", ".r", ".rsx", ".script!" @@ -709,8 +710,8 @@ ".gemrc" ] }, - "tokens_total": 609549, - "languages_total": 745, + "tokens_total": 609672, + "languages_total": 746, "tokens": { "ABAP": { "*/**": 1, @@ -54655,20 +54656,20 @@ "R": { "df.residual.mira": 1, "<": 46, - "-": 51, + "-": 53, "function": 18, "(": 219, "object": 12, "...": 4, ")": 220, - "{": 46, + "{": 58, "fit": 2, "analyses": 1, "[": 23, "]": 24, "return": 8, "df.residual": 2, - "}": 46, + "}": 58, "df.residual.lme": 1, "fixDF": 1, "df.residual.mer": 1, @@ -54704,7 +54705,7 @@ "SHEBANG#!Rscript": 2, "#": 45, "MedianNorm": 2, - "data": 11, + "data": 13, "geomeans": 3, "<->": 1, "exp": 1, @@ -54742,7 +54743,7 @@ "outfile": 4, "sprintf": 2, "png": 2, - "h": 12, + "h": 13, "hist": 4, "plot": 7, "FALSE": 9, @@ -54754,7 +54755,7 @@ "main": 2, "xlab": 2, "ylab": 2, - "for": 3, + "for": 4, "i": 6, "in": 8, "lines": 6, @@ -54800,7 +54801,7 @@ "hello": 2, "print": 1, "module": 25, - "code": 19, + "code": 21, "available": 1, "via": 1, "the": 16, @@ -54822,17 +54823,17 @@ "is": 7, "optionally": 1, "attached": 2, - "to": 8, - "of": 1, + "to": 9, + "of": 2, "current": 2, "scope": 1, "defaults": 1, - ".": 5, + ".": 7, "However": 1, "interactive": 2, "invoked": 1, "directly": 1, - "from": 3, + "from": 5, "terminal": 1, "only": 1, "i.e.": 1, @@ -54840,12 +54841,12 @@ "within": 1, "modules": 4, "import.attach": 1, - "can": 2, - "be": 7, - "set": 1, + "can": 3, + "be": 8, + "set": 2, "or": 1, "depending": 1, - "on": 1, + "on": 2, "user": 1, "s": 2, "preference.": 1, @@ -54853,7 +54854,7 @@ "causes": 1, "emph": 3, "operators": 3, - "by": 1, + "by": 2, "default": 1, "path.": 1, "Not": 1, @@ -54862,14 +54863,14 @@ "therefore": 1, "drastically": 1, "limits": 1, - "a": 5, + "a": 6, "usefulness.": 1, "Modules": 1, - "are": 1, + "are": 4, "searched": 1, "options": 1, "priority.": 1, - "The": 2, + "The": 5, "directory": 1, "always": 1, "considered": 1, @@ -54932,7 +54933,7 @@ "exhibit_namespace": 3, "identical": 2, ".GlobalEnv": 2, - "name": 9, + "name": 10, "environmentName": 2, "parent.env": 4, "export_operators": 2, @@ -54945,7 +54946,7 @@ "parent": 9, ".BaseNamespaceEnv": 1, "paste": 3, - "source": 2, + "source": 3, "chdir": 1, "envir": 5, "cache_module": 1, @@ -54969,7 +54970,7 @@ "references": 1, "remain": 1, "unchanged": 1, - "and": 2, + "and": 5, "files": 1, "would": 1, "have": 1, @@ -55018,7 +55019,58 @@ "pts": 1, "spsample": 1, "polyg": 1, - "numpoints": 1 + "numpoints": 1, + "docType": 1, + "package": 5, + "scholar": 6, + "alias": 2, + "title": 1, + "reads": 1, + "url": 2, + "http": 2, + "//scholar.google.com": 1, + "Dates": 1, + "citation": 2, + "counts": 1, + "estimated": 1, + "determined": 1, + "automatically": 1, + "computer": 1, + "program.": 1, + "Use": 1, + "at": 2, + "your": 1, + "own": 1, + "risk.": 1, + "description": 1, + "provides": 1, + "functions": 3, + "extract": 1, + "Google": 2, + "Scholar.": 1, + "There": 1, + "also": 1, + "convenience": 1, + "comparing": 1, + "multiple": 1, + "scholars": 1, + "predicting": 1, + "index": 1, + "scores": 1, + "based": 1, + "past": 1, + "publication": 1, + "records.": 1, + "note": 1, + "A": 1, + "complementary": 1, + "Scholar": 1, + "found": 1, + "//biostat.jhsph.edu/": 1, + "jleek/code/googleCite.r": 1, + "was": 1, + "developed": 1, + "independently.": 1 }, "Racket": { ";": 3, @@ -65848,7 +65900,7 @@ "Protocol Buffer": 63, "PureScript": 1652, "Python": 5994, - "R": 1667, + "R": 1790, "Racket": 331, "Ragel in Ruby Host": 593, "RDoc": 279, @@ -66030,7 +66082,7 @@ "Protocol Buffer": 1, "PureScript": 4, "Python": 9, - "R": 6, + "R": 7, "Racket": 2, "Ragel in Ruby Host": 3, "RDoc": 1, @@ -66082,5 +66134,5 @@ "YAML": 2, "Zephir": 2 }, - "md5": "3e0640ef27fe27b6aa5485ab50880dcd" + "md5": "e48a5efc06906356916c94d4f2344863" } \ No newline at end of file