Merge branch 'master' into associate-heuristic-with-extension

This commit is contained in:
Paul Chaignon
2015-07-04 22:48:06 +02:00
parent 8bf1defdc1
commit e688c865bc
50 changed files with 4387 additions and 55694 deletions

6
.gitmodules vendored
View File

@@ -629,6 +629,9 @@
[submodule "vendor/grammars/jflex.tmbundle"]
path = vendor/grammars/jflex.tmbundle
url = https://github.com/jflex-de/jflex.tmbundle.git
[submodule "vendor/grammars/Sublime-Modula-2"]
path = vendor/grammars/Sublime-Modula-2
url = https://github.com/harogaston/Sublime-Modula-2
[submodule "vendor/grammars/ada.tmbundle"]
path = vendor/grammars/ada.tmbundle
url = https://github.com/textmate/ada.tmbundle
@@ -647,3 +650,6 @@
[submodule "vendor/grammars/atom-fsharp"]
path = vendor/grammars/atom-fsharp
url = https://github.com/fsprojects/atom-fsharp
[submodule "vendor/grammars/SMT.tmbundle"]
path = vendor/grammars/SMT.tmbundle
url = https://github.com/SRI-CSL/SMT.tmbundle.git

View File

@@ -2,9 +2,27 @@
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. The majority of contributions won't need to touch any Ruby code at all.
## Adding an extension to a language
We try only to add new extensions once they have some usage on GitHub. In most cases we prefer that extensions be in use in hundreds of repositories before supporting them in Linguist.
To add support for a new extension:
0. Add your extension to the language entry in [`languages.yml`][languages].
0. Add at least one sample for your extension to the [samples directory][samples] in the correct subdirectory.
0. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
## Adding a language
We try only to add languages once they have some usage on GitHub. In most cases we prefer that languages be in use in hundreds of repositories before supporting them in Linguist.
We try only to add languages once they have some usage on GitHub. In most cases we prefer that each new file extension be in use in hundreds of repositories before supporting them in Linguist.
To add support for a new language:
@@ -23,12 +41,14 @@ In addition, if your new language defines an extension that's already listed in
Remember, the goal here is to try and avoid false positives!
## Fixing a misclassified language
Most languages are detected by their file extension defined in [languages.yml][languages]. For disambiguating between files with common extensions, linguist applies some [heuristics](/lib/linguist/heuristics.rb) and a [statistical classifier](lib/linguist/classifier.rb). This process can help differentiate between, for example, `.h` files which could be either C, C++, or Obj-C.
Misclassifications can often be solved by either adding a new filename or extension for the language or adding more [samples][samples] to make the classifier smarter.
## Fixing syntax highlighting
Syntax highlighting in GitHub is performed using TextMate-compatible grammars. These are the same grammars that TextMate, Sublime Text and Atom use. Every language in [languages.yml][languages] is mapped to its corresponding TM `scope`. This scope will be used when picking up a grammar for highlighting.
@@ -55,6 +75,7 @@ Sometimes getting the tests running can be too much work, especially if you don'
Here's our current build status: [![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:

View File

@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
s.add_dependency 'charlock_holmes', '~> 0.7.3'
s.add_dependency 'escape_utils', '~> 1.1.0'
s.add_dependency 'mime-types', '>= 1.19'
s.add_dependency 'rugged', '~> 0.23.0b1'
s.add_dependency 'rugged', '>= 0.23.0b'
s.add_development_dependency 'minitest', '>= 5.0'
s.add_development_dependency 'mocha'

View File

@@ -85,6 +85,8 @@ vendor/grammars/Racket:
- source.racket
vendor/grammars/SCSS.tmbundle:
- source.scss
vendor/grammars/SMT.tmbundle:
- source.smt
vendor/grammars/Scalate.tmbundle:
- source.scaml
- text.html.ssp
@@ -107,6 +109,8 @@ vendor/grammars/Sublime-Logos:
- source.logos
vendor/grammars/Sublime-Loom:
- source.loomscript
vendor/grammars/Sublime-Modula-2/:
- source.modula2
vendor/grammars/Sublime-Nit:
- source.nit
vendor/grammars/Sublime-QML:

View File

@@ -69,8 +69,9 @@ module Linguist
generated_protocol_buffer? ||
generated_apache_thrift? ||
generated_jni_header? ||
generated_unity3d_meta? ||
vcr_cassette?
vcr_cassette? ||
generated_module? ||
generated_unity3d_meta?
end
# Internal: Is the blob an Xcode file?
@@ -324,6 +325,24 @@ module Linguist
return lines[0].include?("Generated by Cython")
end
# Internal: Is it a KiCAD or GFortran module file?
#
# KiCAD module files contain:
# PCBNEW-LibModule-V1 yyyy-mm-dd h:mm:ss XM
# on the first line.
#
# GFortran module files contain:
# GFORTRAN module version 'x' created from
# on the first line.
#
# Return true of false
def generated_module?
return false unless extname == '.mod'
return false unless lines.count > 1
return lines[0].include?("PCBNEW-LibModule-V") ||
lines[0].include?("GFORTRAN module version '")
end
# Internal: Is this a metadata file from Unity3D?
#
# Unity3D Meta files start with:

View File

@@ -285,6 +285,16 @@ module Linguist
end
end
disambiguate ".mod" do |data|
if data.include?('<!ENTITY ')
Language["XML"]
elsif /MODULE\s\w+\s*;/i.match(data) || /^\s*END \w+;$/i.match(data)
Language["Modula-2"]
else
[Language["Linux Kernel Module"], Language["AMPL"]]
end
end
disambiguate ".nl" do |data|
if /^(b|g)[0-9]+ /.match(data)
Language["NL"]

View File

@@ -49,6 +49,7 @@ AMPL:
color: "#E6EFBB"
extensions:
- .ampl
- .mod
tm_scope: source.ampl
ace_mode: text
@@ -1359,7 +1360,7 @@ Haskell:
Haxe:
type: programming
ace_mode: haxe
color: "#f7941e"
color: "#df7900"
extensions:
- .hx
- .hxsl
@@ -1475,6 +1476,14 @@ Isabelle:
tm_scope: source.isabelle.theory
ace_mode: text
Isabelle ROOT:
type: programming
group: Isabelle
filenames:
- ROOT
tm_scope: source.isabelle.root
ace_mode: text
J:
type: programming
color: "#9EEDFF"
@@ -1638,7 +1647,7 @@ Kit:
Kotlin:
type: programming
color: "#EA4DFA"
color: "#F18E33"
extensions:
- .kt
- .ktm
@@ -1759,6 +1768,13 @@ Linker Script:
tm_scope: none
ace_mode: text
Linux Kernel Module:
type: data
extensions:
- .mod
tm_scope: none
ace_mode: text
Liquid:
type: markup
extensions:
@@ -2025,6 +2041,13 @@ Modelica:
tm_scope: source.modelica
ace_mode: text
Modula-2:
type: programming
extensions:
- .mod
tm_scope: source.modula2
ace_mode: text
Module Management System:
type: programming
extensions:
@@ -2768,7 +2791,7 @@ Racket:
Ragel in Ruby Host:
type: programming
color: "#e17600"
color: "#9d5200"
extensions:
- .rl
aliases:
@@ -2919,6 +2942,25 @@ SCSS:
extensions:
- .scss
SMT:
type: programming
extensions:
- .smt2
- .smt
interpreters:
- boolector
- cvc4
- mathsat5
- opensmt
- smtinterpol
- smt-rat
- stp
- verit
- yices2
- z3
tm_scope: source.smt
ace_mode: text
SPARQL:
type: data
tm_scope: source.sparql
@@ -3506,6 +3548,7 @@ XML:
- .launch
- .mdpolicy
- .mm
- .mod
- .mxml
- .nproj
- .nuspec

View File

@@ -150,9 +150,10 @@ module Linguist
next if delta.binary
if [:added, :modified].include? delta.status
# Skip submodules
# Skip submodules and symlinks
mode = delta.new_file[:mode]
next if (mode & 040000) != 0
mode_format = (mode & 0170000)
next if mode_format == 0120000 || mode_format == 040000 || mode_format == 0160000
blob = Linguist::LazyBlob.new(repository, delta.new_file[:oid], new, mode.to_s(8))

View File

@@ -70,6 +70,7 @@
- 3rd[-_]?party/
- vendors?/
- extern(al)?/
- (^|/)[Vv]+endor/
# Debian packaging
- ^debian/
@@ -172,6 +173,13 @@
# Sparkle
- (^|/)Sparkle/
# Crashlytics
- Crashlytics.framework/
# Fabric
- Fabric.framework/
## Groovy ##
# Gradle

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.5.6"
VERSION = "4.5.7"
end

58
samples/AMPL/CT2.mod Normal file
View File

@@ -0,0 +1,58 @@
param num_beams; # number of beams
param num_rows >= 1, integer; # number of rows
param num_cols >= 1, integer; # number of columns
set BEAMS := 1 .. num_beams; # set of beams
set ROWS := 1 .. num_rows; # set of rows
set COLUMNS := 1 .. num_cols; # set of columns
# values for entries of each beam
param beam_values {BEAMS, ROWS, COLUMNS} >= 0;
# values of tumor
param tumor_values {ROWS, COLUMNS} >= 0;
# values of critical area
param critical_values {ROWS, COLUMNS} >= 0;
# critical maximum dosage requirement
param critical_max;
# tumor minimum dosage requirement
param tumor_min;
# dosage scalar of each beam
var X {i in BEAMS} >= 0;
# define the tumor area which includes the locations where tumor exists
set tumor_area := {k in ROWS, h in COLUMNS: tumor_values[k,h] > 0};
# define critical area
set critical_area := {k in ROWS, h in COLUMNS: critical_values[k,h] > 0};
var S {(k,h) in tumor_area} >= 0;
var T {(k,h) in critical_area} >= 0;
# maximize total dosage in tumor area
maximize total_tumor_dosage: sum {i in BEAMS} sum {(k,h) in tumor_area} X[i] * beam_values[i,k,h];
# minimize total dosage in critical area
minimize total_critical_dosage: sum {i in BEAMS} sum {(k,h) in critical_area} X[i] * beam_values[i,k,h];
# minimize total tumor slack
minimize total_tumor_slack: sum {(k,h) in tumor_area} S[k,h];
# minimize total critical area slack
minimize total_critical_slack: sum {(k,h) in critical_area} T[k,h];
# total dosage at each tumor location [k,h] should be >= min tumor dosage with slack variable
subject to tumor_limit {(k,h) in tumor_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == tumor_min - S[k,h];
# total dosage at each critical location [k,h] should be = max critical dosage with slack variable
subject to critical_limit {(k,h) in critical_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == critical_max + T[k,h];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcm4334x.ko
/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_pno.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_ip.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_custom_gpio.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_sched.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_wq.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/aiutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmevent.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmwifi_channels.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/hndpmu.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/linux_osl.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/sbutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/siutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_android.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfgp2p.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg_btcoex.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wldev_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_linux_mon.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_platdev.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cdc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_wlfc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_sdio.o

View File

@@ -0,0 +1,2 @@
fs/mbcache.ko
fs/mbcache.o

View File

@@ -0,0 +1,2 @@
crypto/md5.ko
crypto/md5.o

View File

@@ -0,0 +1,329 @@
IMPLEMENTATION MODULE HuffChan;
(*
This module shows how to redefine standard IO file functions. It provides
functions for reading and writing packed files opened in Raw mode.
*)
IMPORT IOChan, IOLink, ChanConsts, IOConsts, SYSTEM, Strings;
FROM Storage IMPORT ALLOCATE, DEALLOCATE;
CONST
rbldFrq = 512; (* means: every 512 bytes rebuild table *)
TYPE
charTap = POINTER TO ARRAY [0..MAX(INTEGER)-1] OF CHAR;
smbTp = POINTER TO smbT;
smbT = RECORD (* Huffman's tree *)
ch : CHAR;
n : CARDINAL; (* frequncy of char ch *)
left,right,next : smbTp;
END;
tblT = RECORD (* bit sequence for code *)
vl : CARDINAL; (* bit sequence *)
cnt : INTEGER; (* it length *)
END;
lclDataT = RECORD (* channel's local data *)
tRoot : smbTp;
htbl : ARRAY [0..255] OF tblT; (* code -> bit sequence table *)
ftbl : ARRAY [0..255] OF CARDINAL; (* frequncey table *)
wBf,rb1,rb2 : CARDINAL;
wbc,rbc,smc : INTEGER;
chid : IOChan.ChanId;
END;
lclDataTp = POINTER TO lclDataT;
charp = POINTER TO CHAR;
VAR
did : IOLink.DeviceId;
ldt : lclDataTp;
PROCEDURE Shf(a:CARDINAL; b : INTEGER) : CARDINAL; (* shl a,b (or shr) *)
BEGIN
RETURN SYSTEM.CAST(CARDINAL,SYSTEM.SHIFT(SYSTEM.CAST(BITSET,a),b));
END Shf;
PROCEDURE wrDword(a:CARDINAL); (* write 4 bytes to file *)
BEGIN
IOChan.RawWrite(ldt^.chid,SYSTEM.ADR(a),4);
END wrDword;
PROCEDURE rdDword() : CARDINAL; (* read 4 bytes from file *)
VAR
a,z : CARDINAL;
BEGIN
a:=0;
IOChan.RawRead(ldt^.chid,SYSTEM.ADR(a),4,z);
RETURN a;
END rdDword;
PROCEDURE wrSmb(ch : CHAR); (* write bit sequence for code ch *)
VAR
v,h : CARDINAL;
b,c : INTEGER;
BEGIN
WITH ldt^ DO
v:=htbl[ORD(ch)].vl;
c:=htbl[ORD(ch)].cnt;
IF c+wbc<=32 THEN
wBf:=Shf(wBf,c);
wBf:=wBf+v;
wbc:=wbc+c;
IF wbc=32 THEN
wrDword(wBf);
wBf:=0; wbc:=0;
END;
RETURN;
END;
b:=c+wbc-32;
h:=Shf(v,-b);
wBf:=Shf(wBf,32-wbc)+h;
wrDword(wBf);
wBf:=v-Shf(h,b);
wbc:=b;
END;
END wrSmb;
PROCEDURE flush(); (* write data in buffer *)
BEGIN
WITH ldt^ DO
wBf:=Shf(wBf,32-wbc);
wrDword(wBf);
END;
END flush;
PROCEDURE getSym() : CHAR; (* find code for first bit sequence in buffer *)
VAR
t,i : CARDINAL;
b : INTEGER;
BEGIN
WITH ldt^ DO
IF rbc<=32 THEN
rb2:=rdDword();
t:=Shf(rb2,-rbc);
IF rbc=32 THEN t:=0; END;
rb1:=rb1+t;
rb2:=Shf(rb2,32-rbc);
IF rbc=0 THEN rb2:=0; END;
rbc:=rbc+32;
END;
FOR i:=0 TO 255 DO
t:=Shf(rb1,htbl[i].cnt-32);
IF t=htbl[i].vl THEN
rb1:=Shf(rb1,htbl[i].cnt);
b:=32-htbl[i].cnt;
t:=Shf(rb2,-b);
rb1:=rb1+t;
rb2:=Shf(rb2,32-b);
rbc:=rbc+b-32;
RETURN CHR(i);
END;
END;
END;
END getSym;
PROCEDURE Insert(s : smbTp); (* insert new character in Huffman's tree *)
VAR
cr : smbTp;
BEGIN
WITH ldt^ DO
IF tRoot=NIL THEN
cr:=tRoot;
tRoot:=s;
s^.next:=cr;
RETURN;
ELSIF tRoot^.n<=s^.n THEN
cr:=tRoot;
tRoot:=s;
s^.next:=cr;
RETURN;
END;
cr:=tRoot;
WHILE (cr^.next<>NIL) & (cr^.next^.n>s^.n) DO
cr:=cr^.next;
END;
s^.next:=cr^.next;
cr^.next:=s;
END;
END Insert;
PROCEDURE BuildTree(); (* build Huffman's tree *)
VAR
cr,ocr,ncr : smbTp;
BEGIN
WITH ldt^ DO
LOOP
ocr:=NIL; cr:=tRoot;
WHILE cr^.next^.next<>NIL DO
ocr:=cr; cr:=cr^.next;
END;
NEW(ncr);
ncr^.n:=cr^.n+cr^.next^.n;
ncr^.left:=cr;
ncr^.right:=cr^.next;
IF ocr<>NIL THEN
ocr^.next:=NIL;
Insert(ncr);
ELSE
tRoot:=NIL;
Insert(ncr);
EXIT;
END;
END;
END;
END BuildTree;
PROCEDURE BuildTable(cr: smbTp; vl,n: CARDINAL); (* build table: code -> bit sequence *)
BEGIN
WITH ldt^ DO
IF cr^.left=NIL THEN
htbl[ORD(cr^.ch)].vl:=vl;
htbl[ORD(cr^.ch)].cnt:=n;
DISPOSE(cr);
RETURN;
END;
vl:=vl*2;
BuildTable(cr^.left,vl,n+1);
BuildTable(cr^.right,vl+1,n+1);
DISPOSE(cr);
END;
END BuildTable;
PROCEDURE clcTab(); (* build code/bitseq. table from frequency table *)
VAR
i : CARDINAL;
s : smbTp;
BEGIN
WITH ldt^ DO
tRoot:=NIL;
FOR i:=0 TO 255 DO
NEW(s);
s^.ch:=CHR(i);
s^.n:=ftbl[i];
s^.left:=NIL; s^.right:=NIL; s^.next:=NIL;
Insert(s);
END;
BuildTree();
BuildTable(tRoot,0,0);
END;
END clcTab;
PROCEDURE iniHuf();
VAR
i : CARDINAL;
BEGIN
WITH ldt^ DO
FOR i:=0 TO 255 DO
ftbl[i]:=1;
END;
wBf:=0; wbc:=0; rb1:=0; rb2:=0; rbc:=0;
smc:=0;
clcTab();
END;
END iniHuf;
PROCEDURE RawWrite(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS;
len: CARDINAL);
VAR
i : CARDINAL;
ch : CHAR;
cht : charTap;
BEGIN
IF len = 0 THEN RETURN; END;
ldt:=SYSTEM.CAST(lclDataTp,x^.cd);
cht:=SYSTEM.CAST(charTap,buf);
WITH ldt^ DO
FOR i:=0 TO len-1 DO
ch:=cht^[i];
wrSmb(ch);
IF ch = 377C THEN wrSmb(ch); END;
ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1;
IF smc=rbldFrq THEN
clcTab();
smc:=0;
END;
END;
END;
x^.result:=IOChan.ReadResult(ldt^.chid);
END RawWrite;
PROCEDURE RawRead(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS;
blen: CARDINAL; VAR len: CARDINAL);
VAR
i : CARDINAL;
cht : charTap;
ch : CHAR;
BEGIN
ldt:=SYSTEM.CAST(lclDataTp,x^.cd);
cht:=SYSTEM.CAST(charTap,buf);
IF (blen=0) OR (x^.result<>IOConsts.allRight) THEN len:=0; RETURN; END;
WITH ldt^ DO
FOR i:=0 TO blen-1 DO
ch:=getSym();
IF ch = 377C THEN
ch:=getSym();
IF ch = 0C THEN
x^.result:=IOConsts.endOfInput;
len:=i; cht^[i]:=0C;
RETURN;
END;
END;
cht^[i]:=ch;
ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1;
IF smc=rbldFrq THEN
clcTab();
smc:=0;
END;
END;
len:=blen;
END;
END RawRead;
PROCEDURE CreateAlias(VAR cid: ChanId; io: ChanId; VAR res: OpenResults);
VAR
x : IOLink.DeviceTablePtr;
BEGIN
IOLink.MakeChan(did,cid);
IF cid = IOChan.InvalidChan() THEN
res:=ChanConsts.outOfChans
ELSE
NEW(ldt);
IF ldt=NIL THEN
IOLink.UnMakeChan(did,cid);
res:=ChanConsts.outOfChans;
RETURN;
END;
x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,"");
ldt^.chid:=io;
x^.cd:=ldt;
x^.doRawWrite:=RawWrite;
x^.doRawRead:=RawRead;
res:=ChanConsts.opened;
iniHuf();
x^.result:=IOConsts.allRight;
END;
END CreateAlias;
PROCEDURE DeleteAlias(VAR cid: ChanId);
VAR
x : IOLink.DeviceTablePtr;
BEGIN
x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,"");
ldt:=x^.cd;
IF ldt^.rbc=0 THEN
wrSmb(377C);
wrSmb(0C);
flush();
END;
DISPOSE(ldt);
IOLink.UnMakeChan(did,cid);
END DeleteAlias;
BEGIN
IOLink.AllocateDeviceId(did);
END HuffChan.

6
samples/PHP/root.php Normal file
View File

@@ -0,0 +1,6 @@
<?php
////////////////////////////////////
// I am not Isabelle ROOT //
////////////////////////////////////
?>

View File

@@ -1,4 +1,5 @@
use Test::Base;
use Test::More;
__DATA__
=== Strict Test

View File

@@ -73,26 +73,6 @@ Here's some POD! Wooo
say('this is not!');
=table
Of role things
say('not in your table');
#= A single line declarator "block" (with a keyword like role)
#| Another single line declarator "block" (with a keyword like role)
#={
A declarator block (with a keyword like role)
}
#|{
Another declarator block (with a keyword like role)
}
#= { A single line declarator "block" with a brace (with a keyword like role)
#=«
More declarator blocks! (with a keyword like role)
»
#|«
More declarator blocks! (with a keyword like role)
»
say 'Moar code!';
my $don't = 16;

View File

@@ -0,0 +1,20 @@
(set-logic QF_LIA)
(set-info :source | SMT-COMP'06 organizers |)
(set-info :smt-lib-version 2.0)
(set-info :category "check")
(set-info :status unsat)
(set-info :notes |This benchmark is designed to check if the DP supports bignumbers.|)
(declare-fun x1 () Int)
(declare-fun x2 () Int)
(declare-fun x3 () Int)
(declare-fun x4 () Int)
(declare-fun x5 () Int)
(declare-fun x6 () Int)
(assert (and (or (>= x1 1000) (>= x1 1002))
(or (>= x2 (* 1230 x1)) (>= x2 (* 1003 x1)))
(or (>= x3 (* 1310 x2)) (>= x3 (* 1999 x2)))
(or (>= x4 (* 4000 x3)) (>= x4 (* 8000 x3)))
(or (<= x5 (* (- 4000) x4)) (<= x5 (* (- 8000) x4)))
(or (>= x6 (* (- 3) x5)) (>= x6 (* (- 2) x5))) (< x6 0)))
(check-sat)
(exit)

20
samples/SMT/list4.smt2 Normal file
View File

@@ -0,0 +1,20 @@
(set-logic AUFLIRA)
(set-info :source | Buggy list theorem |)
(set-info :smt-lib-version 2.0)
(set-info :category "crafted")
(set-info :status sat)
(declare-sort List 0)
(declare-fun cons (Real List) List)
(declare-fun nil () List)
(declare-fun car (List) Real)
(declare-fun cdr (List) List)
(declare-fun len (List) Int)
(assert (forall ((?x Real) (?y List)) (= (car (cons ?x ?y)) ?x)))
(assert (forall ((?x Real) (?y List)) (= (cdr (cons ?x ?y)) ?y)))
(assert (= (len nil) 0))
(assert (forall ((?x Real) (?y List)) (= (len (cons ?x ?y)) (+ (len ?y) 1))))
(declare-fun append (List List) List)
(assert (forall ((?x Real) (?y1 List) (?y2 List)) (= (append (cons ?x ?y1) ?y2) (cons ?x (append ?y1 ?y2)))))
(assert (not (forall ((?x Real) (?y List)) (= (append (cons ?x nil) ?y) (cons ?x ?y)))))
(check-sat)
(exit)

123
samples/SMT/queen10-1.smt2 Normal file
View File

@@ -0,0 +1,123 @@
(set-logic QF_IDL)
(set-info :source |
Queens benchmarks generated by Hyondeuk Kim in SMT-LIB format.
|)
(set-info :smt-lib-version 2.0)
(set-info :category "crafted")
(set-info :status sat)
(declare-fun x0 () Int)
(declare-fun x1 () Int)
(declare-fun x2 () Int)
(declare-fun x3 () Int)
(declare-fun x4 () Int)
(declare-fun x5 () Int)
(declare-fun x6 () Int)
(declare-fun x7 () Int)
(declare-fun x8 () Int)
(declare-fun x9 () Int)
(declare-fun x10 () Int)
(assert
(let
((?v_0 (- x0 x10))
(?v_1 (- x1 x10))
(?v_2 (- x2 x10))
(?v_3 (- x3 x10))
(?v_4 (- x4 x10))
(?v_5 (- x5 x10))
(?v_6 (- x6 x10))
(?v_7 (- x7 x10))
(?v_8 (- x8 x10))
(?v_9 (- x9 x10))
(?v_10 (- x0 x1))
(?v_11 (- x0 x2))
(?v_12 (- x0 x3))
(?v_13 (- x0 x4))
(?v_14 (- x0 x5))
(?v_15 (- x0 x6))
(?v_16 (- x0 x7))
(?v_17 (- x0 x8))
(?v_18 (- x0 x9))
(?v_19 (- x1 x2))
(?v_20 (- x1 x3))
(?v_21 (- x1 x4))
(?v_22 (- x1 x5))
(?v_23 (- x1 x6))
(?v_24 (- x1 x7))
(?v_25 (- x1 x8))
(?v_26 (- x1 x9))
(?v_27 (- x2 x3))
(?v_28 (- x2 x4))
(?v_29 (- x2 x5))
(?v_30 (- x2 x6))
(?v_31 (- x2 x7))
(?v_32 (- x2 x8))
(?v_33 (- x2 x9))
(?v_34 (- x3 x4))
(?v_35 (- x3 x5))
(?v_36 (- x3 x6))
(?v_37 (- x3 x7))
(?v_38 (- x3 x8))
(?v_39 (- x3 x9))
(?v_40 (- x4 x5))
(?v_41 (- x4 x6))
(?v_42 (- x4 x7))
(?v_43 (- x4 x8))
(?v_44 (- x4 x9))
(?v_45 (- x5 x6))
(?v_46 (- x5 x7))
(?v_47 (- x5 x8))
(?v_48 (- x5 x9))
(?v_49 (- x6 x7))
(?v_50 (- x6 x8))
(?v_51 (- x6 x9))
(?v_52 (- x7 x8))
(?v_53 (- x7 x9))
(?v_54 (- x8 x9)))
(and (<= ?v_0 9) (>= ?v_0 0) (<= ?v_1 9) (>= ?v_1 0) (<= ?v_2 9) (>= ?v_2 0)
(<= ?v_3 9) (>= ?v_3 0) (<= ?v_4 9) (>= ?v_4 0) (<= ?v_5 9) (>= ?v_5 0)
(<= ?v_6 9) (>= ?v_6 0) (<= ?v_7 9) (>= ?v_7 0) (<= ?v_8 9) (>= ?v_8 0)
(<= ?v_9 9) (>= ?v_9 0)
(not (= x0 x1)) (not (= x0 x2)) (not (= x0 x3)) (not (= x0 x4))
(not (= x0 x5)) (not (= x0 x6)) (not (= x0 x7)) (not (= x0 x8))
(not (= x0 x9)) (not (= x1 x2)) (not (= x1 x3)) (not (= x1 x4))
(not (= x1 x5)) (not (= x1 x6)) (not (= x1 x7)) (not (= x1 x8))
(not (= x1 x9)) (not (= x2 x3)) (not (= x2 x4)) (not (= x2 x5))
(not (= x2 x6)) (not (= x2 x7)) (not (= x2 x8)) (not (= x2 x9))
(not (= x3 x4)) (not (= x3 x5)) (not (= x3 x6)) (not (= x3 x7))
(not (= x3 x8)) (not (= x3 x9)) (not (= x4 x5)) (not (= x4 x6))
(not (= x4 x7)) (not (= x4 x8)) (not (= x4 x9)) (not (= x5 x6))
(not (= x5 x7)) (not (= x5 x8)) (not (= x5 x9)) (not (= x6 x7))
(not (= x6 x8)) (not (= x6 x9)) (not (= x7 x8)) (not (= x7 x9))
(not (= x8 x9))
(not (= ?v_10 1)) (not (= ?v_10 (- 1))) (not (= ?v_11 2))
(not (= ?v_11 (- 2))) (not (= ?v_12 3)) (not (= ?v_12 (- 3)))
(not (= ?v_13 4)) (not (= ?v_13 (- 4))) (not (= ?v_14 5))
(not (= ?v_14 (- 5))) (not (= ?v_15 6)) (not (= ?v_15 (- 6)))
(not (= ?v_16 7)) (not (= ?v_16 (- 7))) (not (= ?v_17 8))
(not (= ?v_17 (- 8))) (not (= ?v_18 9)) (not (= ?v_18 (- 9)))
(not (= ?v_19 1)) (not (= ?v_19 (- 1))) (not (= ?v_20 2))
(not (= ?v_20 (- 2))) (not (= ?v_21 3)) (not (= ?v_21 (- 3)))
(not (= ?v_22 4)) (not (= ?v_22 (- 4))) (not (= ?v_23 5))
(not (= ?v_23 (- 5))) (not (= ?v_24 6)) (not (= ?v_24 (- 6)))
(not (= ?v_25 7)) (not (= ?v_25 (- 7))) (not (= ?v_26 8))
(not (= ?v_26 (- 8))) (not (= ?v_27 1)) (not (= ?v_27 (- 1)))
(not (= ?v_28 2)) (not (= ?v_28 (- 2))) (not (= ?v_29 3))
(not (= ?v_29 (- 3))) (not (= ?v_30 4)) (not (= ?v_30 (- 4)))
(not (= ?v_31 5)) (not (= ?v_31 (- 5))) (not (= ?v_32 6))
(not (= ?v_32 (- 6))) (not (= ?v_33 7)) (not (= ?v_33 (- 7)))
(not (= ?v_34 1)) (not (= ?v_34 (- 1))) (not (= ?v_35 2))
(not (= ?v_35 (- 2))) (not (= ?v_36 3)) (not (= ?v_36 (- 3)))
(not (= ?v_37 4)) (not (= ?v_37 (- 4))) (not (= ?v_38 5))
(not (= ?v_38 (- 5))) (not (= ?v_39 6)) (not (= ?v_39 (- 6)))
(not (= ?v_40 1)) (not (= ?v_40 (- 1))) (not (= ?v_41 2))
(not (= ?v_41 (- 2))) (not (= ?v_42 3)) (not (= ?v_42 (- 3)))
(not (= ?v_43 4)) (not (= ?v_43 (- 4))) (not (= ?v_44 5))
(not (= ?v_44 (- 5))) (not (= ?v_45 1)) (not (= ?v_45 (- 1)))
(not (= ?v_46 2)) (not (= ?v_46 (- 2))) (not (= ?v_47 3))
(not (= ?v_47 (- 3))) (not (= ?v_48 4)) (not (= ?v_48 (- 4)))
(not (= ?v_49 1)) (not (= ?v_49 (- 1))) (not (= ?v_50 2))
(not (= ?v_50 (- 2))) (not (= ?v_51 3)) (not (= ?v_51 (- 3)))
(not (= ?v_52 1)) (not (= ?v_52 (- 1))) (not (= ?v_53 2))
(not (= ?v_53 (- 2))) (not (= ?v_54 1)) (not (= ?v_54 (- 1))))))
(check-sat)
(exit)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,125 @@
<!-- ...................................................................... -->
<!-- XHTML Structure Module .............................................. -->
<!-- file: xhtml-struct-1.mod
This is XHTML, a reformulation of HTML as a modular XML application.
Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
Revision: $Id: xhtml-struct-1.mod,v 1.1.1.1 2006/01/09 19:23:30 rcrews Exp $ SMI
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-struct-1.mod"
Revisions:
(none)
....................................................................... -->
<!-- Document Structure
title, head, body, html
The Structure Module defines the major structural elements and
their attributes.
Note that the content model of the head element type is redeclared
when the Base Module is included in the DTD.
The parameter entity containing the XML namespace URI value used
for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
-->
<!-- title: Document Title ............................. -->
<!-- The title element is not considered part of the flow of text.
It should be displayed, for example as the page header or
window title. Exactly one title is required per document.
-->
<!ENTITY % title.element "INCLUDE" >
<![%title.element;[
<!ENTITY % title.content "( #PCDATA )" >
<!ENTITY % title.qname "title" >
<!ELEMENT %title.qname; %title.content; >
<!-- end of title.element -->]]>
<!ENTITY % title.attlist "INCLUDE" >
<![%title.attlist;[
<!ATTLIST %title.qname;
%XHTML.xmlns.attrib;
%I18n.attrib;
>
<!-- end of title.attlist -->]]>
<!-- head: Document Head ............................... -->
<!ENTITY % head.element "INCLUDE" >
<![%head.element;[
<!ENTITY % head.content
"( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )"
>
<!ENTITY % head.qname "head" >
<!ELEMENT %head.qname; %head.content; >
<!-- end of head.element -->]]>
<!ENTITY % head.attlist "INCLUDE" >
<![%head.attlist;[
<!-- reserved for future use with document profiles
-->
<!ENTITY % profile.attrib
"profile %URI.datatype; '%XHTML.profile;'"
>
<!ATTLIST %head.qname;
%XHTML.xmlns.attrib;
%I18n.attrib;
%profile.attrib;
>
<!-- end of head.attlist -->]]>
<!-- body: Document Body ............................... -->
<!ENTITY % body.element "INCLUDE" >
<![%body.element;[
<!ENTITY % body.content
"( %Block.mix; )+"
>
<!ENTITY % body.qname "body" >
<!ELEMENT %body.qname; %body.content; >
<!-- end of body.element -->]]>
<!ENTITY % body.attlist "INCLUDE" >
<![%body.attlist;[
<!ATTLIST %body.qname;
%Common.attrib;
>
<!-- end of body.attlist -->]]>
<!-- html: XHTML Document Element ...................... -->
<!ENTITY % html.element "INCLUDE" >
<![%html.element;[
<!ENTITY % html.content "( %head.qname;, %body.qname; )" >
<!ENTITY % html.qname "html" >
<!ELEMENT %html.qname; %html.content; >
<!-- end of html.element -->]]>
<!ENTITY % html.attlist "INCLUDE" >
<![%html.attlist;[
<!-- version attribute value defined in driver
-->
<!ENTITY % XHTML.version.attrib
"version %FPI.datatype; #FIXED '%XHTML.version;'"
>
<!-- see the Qualified Names module for information
on how to extend XHTML using XML namespaces
-->
<!ATTLIST %html.qname;
%XHTML.xmlns.attrib;
%XHTML.version.attrib;
%I18n.attrib;
>
<!-- end of html.attlist -->]]>
<!-- end of xhtml-struct-1.mod -->

50
test/fixtures/Generated/ABM8G.mod vendored Normal file
View File

@@ -0,0 +1,50 @@
PCBNEW-LibModule-V1 Wed 10 Aug 2011 05:57:27 PM COT
# encoding utf-8
$INDEX
ABM8G
$EndINDEX
$MODULE ABM8G
Po 0 0 0 15 4E430CBD 4E430CC5 ~~
Li ABM8G
Sc 4E430CC5
AR
Op 0 0 0
T0 591 -1378 354 354 0 39 N V 21 N "ABM8G"
T1 0 787 354 354 0 39 N V 21 N "VAL**"
DS -591 394 1299 394 79 21
DS 1299 394 1299 -1063 79 21
DS 1299 -1063 -472 -1063 79 21
DS -472 -1063 -472 472 79 21
DS -472 472 -472 551 79 21
DS -472 551 -591 551 79 21
DS -591 551 -591 433 79 21
$PAD
Sh "1" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 0 0
$EndPAD
$PAD
Sh "2" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 866 0
$EndPAD
$PAD
Sh "3" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 866 -669
$EndPAD
$PAD
Sh "4" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 0 -669
$EndPAD
$EndMODULE ABM8G
$EndLIBRARY

19
test/fixtures/Generated/ms2.mod vendored Normal file
View File

@@ -0,0 +1,19 @@
GFORTRAN module version '0' created from ms2.f90 on Thu Sep 5 10:09:19 2013
MD5:8a80cd5db1bc612a28603959302dbf37 -- If you edit this, you'll get what you deserve.
(() () () () () () () () () () () () () () () () () () () () () () () ()
() () ())
()
()
()
()
(2 'ms2' 'ms2' 'ms2' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
)
('ms2' 0 2)

1
test/fixtures/SVG/alg_schema.link.svg vendored Symbolic link
View File

@@ -0,0 +1 @@
alg_schema.svg

269
test/fixtures/SVG/alg_schema.svg vendored Normal file
View File

@@ -0,0 +1,269 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="alg_schema.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.834386"
inkscape:cx="409.42881"
inkscape:cy="681.83774"
inkscape:document-units="px"
inkscape:current-layer="g3759"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="993"
inkscape:window-x="1280"
inkscape:window-y="31"
inkscape:window-maximized="0"
showguides="true"
inkscape:snap-global="false">
<inkscape:grid
type="xygrid"
id="grid3914" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3759"
transform="translate(-3.3909149,-21.218048)">
<rect
ry="11.855058"
rx="14.468504"
y="138.58023"
x="108.08632"
height="66.263969"
width="247.48737"
id="rect2985"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755"
y="163.58023"
x="238.39091"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="163.58023"
x="238.39091"
id="tspan3757"
sodipodi:role="line">Sequence KEY</tspan><tspan
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="193.58023"
x="238.39091"
sodipodi:role="line"
id="tspan4055">256 bits</tspan></text>
</g>
<g
id="g3870"
transform="translate(-0.73178617,29.27145)">
<g
id="g3759-5"
transform="translate(-0.40143056,286.32219)">
<rect
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2985-5"
width="247.48737"
height="74.751289"
x="108.08632"
y="130.09291"
rx="14.468504"
ry="13.373494" />
<flowRoot
transform="translate(2.4712344,-292.01415)"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
id="flowRoot3797"
xml:space="preserve"><flowRegion
id="flowRegion3799"><rect
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="428.79074"
x="125"
height="58.346195"
width="86.479271"
id="rect3801" /></flowRegion><flowPara
id="flowPara3805">Salt</flowPara><flowPara
id="flowPara3841">96 bits</flowPara></flowRoot> <flowRoot
transform="translate(115.26831,-291.40674)"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
id="flowRoot3797-6"
xml:space="preserve"><flowRegion
id="flowRegion3799-5"><rect
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="428.79074"
x="125"
height="60.933453"
width="104.07261"
id="rect3801-6" /></flowRegion><flowPara
id="flowPara3805-9">Counter</flowPara><flowPara
id="flowPara3809-3">32 bits</flowPara></flowRoot> <path
inkscape:connector-curvature="0"
id="path3845"
d="m 229.11476,138.88943 0,57.95451"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
transform="matrix(0.6979728,0,0,0.6979728,71.363842,197.71804)"
id="g3759-7">
<rect
ry="13.373494"
rx="14.297379"
y="130.09291"
x="108.08632"
height="74.751289"
width="244.56023"
id="rect2985-4"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755-5"
y="178.58023"
x="141.31805"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:32px;fill:#beff83;fill-opacity:1"
y="178.58023"
x="141.31805"
id="tspan3757-2"
sodipodi:role="line">AES Cipher</tspan></text>
</g>
<path
style="fill:#6ea1cc;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
d="m 225,437.36218 0,-50 -15,5 25,-35 25,35 -15,-5 0,50 z"
id="path3912"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 340,302.36218 50,0 -5,-15 35,25 -35,25 5,-15 -50,0 z"
id="path3912-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 245,192.36218 0,50 15,-5 -25,35 -25,-35 15,5 0,-50 z"
id="path3912-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<g
transform="matrix(0.6979728,0,0,0.6979728,361.36384,197.71804)"
id="g3759-7-7">
<rect
ry="13.373494"
rx="17.857012"
y="130.09291"
x="108.08632"
height="74.751289"
width="305.44867"
id="rect2985-4-4"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755-5-4"
y="159.80484"
x="255.9357"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1"
y="159.80484"
x="255.9357"
sodipodi:role="line"
id="tspan3979">Secure random data</tspan><tspan
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1"
y="192.04105"
x="255.9357"
sodipodi:role="line"
id="tspan3983">128 bits</tspan></text>
</g>
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.45614035"
d="m 550,352.36218 0,50 15,-5 -25,35 -25,-35 15,5 0,-50 z"
id="path3912-5-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="540"
y="382.36218"
id="text4003"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="540"
y="382.36218"
id="tspan4007"
style="font-size:16px;text-align:center;text-anchor:middle">Division by alphabet length</tspan><tspan
sodipodi:role="line"
x="540"
y="402.36218"
style="font-size:16px;text-align:center;text-anchor:middle"
id="tspan4053">repeated passcode-length times.</tspan></text>
<g
transform="matrix(0.6979728,0,0,0.6979728,344.55869,369.3865)"
id="g3759-7-7-7">
<g
id="g4045"
transform="translate(-1.21417,-6.070852)">
<rect
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2985-4-4-8"
width="305.44867"
height="74.751289"
x="131.15555"
y="130.09291"
rx="17.857012"
ry="13.373494" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="283.77673"
y="158.71724"
id="text3755-5-4-6"
sodipodi:linespacing="125%"><tspan
id="tspan3983-8"
sodipodi:role="line"
x="283.77673"
y="158.71724"
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1">Passcode</tspan><tspan
id="tspan4043"
sodipodi:role="line"
x="283.77673"
y="190.95346"
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1">2-16 characters</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -279,6 +279,9 @@ class TestBlob < Minitest::Test
# Rails vendor/
assert sample_blob("vendor/plugins/will_paginate/lib/will_paginate.rb").vendored?
# Vendor/
assert sample_blob("Vendor/my_great_file.h").vendored?
# 'thirdparty' directory
assert sample_blob("thirdparty/lib/main.c").vendored?
@@ -480,6 +483,12 @@ class TestBlob < Minitest::Test
# Vagrant
assert sample_blob("puphpet/file.pp").vendored?
# Fabric.io
assert sample_blob("Fabric.framework/Fabric.h").vendored?
# Crashlytics
assert sample_blob("Crashlytics.framework/Crashlytics.h").vendored?
end
def test_documentation
@@ -551,6 +560,8 @@ class TestBlob < Minitest::Test
blob = fixture_blob(filepath)
if language == 'Data'
assert blob.language.nil?, "A language was found for #{filepath}"
elsif language == 'Generated'
assert blob.generated?, "#{filepath} is not a generated file"
else
assert blob.language, "No language for #{filepath}"
assert_equal language, blob.language.name, blob.name

1
vendor/grammars/SMT.tmbundle vendored Submodule