textpow 0.10.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +7 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +30 -0
- data/{History.txt → History.rdoc} +10 -0
- data/{README.txt → MIT-LICENSE.txt} +0 -30
- data/README.rdoc +82 -0
- data/Rakefile +42 -49
- data/bin/plist2syntax +0 -0
- data/bin/plist2yaml +0 -0
- data/examples/benchmark_js.rb +13 -0
- data/examples/jquery.js +9046 -0
- data/lib/textpow.rb +43 -3
- data/lib/textpow/debug_processor.rb +35 -35
- data/lib/textpow/recording_processor.rb +13 -0
- data/lib/textpow/score_manager.rb +60 -60
- data/lib/textpow/syntax.rb +303 -262
- data/lib/textpow/syntax/broken/markdown.syntax +519 -0
- data/lib/textpow/syntax/broken/php.syntax +1253 -0
- data/lib/textpow/syntax/buggy/nemerle.syntax +74 -0
- data/lib/textpow/syntax/old/YAML.yaml +160 -0
- data/lib/textpow/syntax/old/txt2tags.yaml +139 -0
- data/lib/textpow/syntax/source.actionscript.syntax +97 -0
- data/lib/textpow/syntax/source.active4d.library.syntax +21 -0
- data/lib/textpow/syntax/source.active4d.syntax +276 -0
- data/lib/textpow/syntax/source.ada.syntax +33 -0
- data/lib/textpow/syntax/source.antlr.syntax +151 -0
- data/lib/textpow/syntax/source.apache-config.mod_perl.syntax +50 -0
- data/lib/textpow/syntax/source.apache-config.syntax +191 -0
- data/lib/textpow/syntax/source.applescript.syntax +384 -0
- data/lib/textpow/syntax/source.asp.syntax +70 -0
- data/lib/textpow/syntax/source.asp.vb.net.syntax +129 -0
- data/lib/textpow/syntax/source.c++.qt.syntax +26 -0
- data/lib/textpow/syntax/source.c++.syntax +186 -0
- data/lib/textpow/syntax/source.c-sharp.syntax +59 -0
- data/lib/textpow/syntax/source.c.ragel.syntax +201 -0
- data/lib/textpow/syntax/source.c.syntax +414 -0
- data/lib/textpow/syntax/source.camlp4.ocaml.syntax +36 -0
- data/lib/textpow/syntax/source.cm.syntax +32 -0
- data/lib/textpow/syntax/source.coffee.syntax +216 -0
- data/lib/textpow/syntax/source.context-free.syntax +176 -0
- data/lib/textpow/syntax/source.css.beta.syntax +1925 -0
- data/lib/textpow/syntax/source.css.syntax +195 -0
- data/lib/textpow/syntax/source.d.syntax +142 -0
- data/lib/textpow/syntax/source.diff.syntax +81 -0
- data/lib/textpow/syntax/source.dot.syntax +47 -0
- data/lib/textpow/syntax/source.dylan.syntax +62 -0
- data/lib/textpow/syntax/source.eiffel.syntax +78 -0
- data/lib/textpow/syntax/source.erlang.syntax +922 -0
- data/lib/textpow/syntax/source.fortran.syntax +141 -0
- data/lib/textpow/syntax/source.fscript.syntax +80 -0
- data/lib/textpow/syntax/source.fxscript.syntax +142 -0
- data/lib/textpow/syntax/source.gri.syntax +83 -0
- data/lib/textpow/syntax/source.groovy.groovy.syntax +191 -0
- data/lib/textpow/syntax/source.haskell.syntax +88 -0
- data/lib/textpow/syntax/source.icalendar.syntax +32 -0
- data/lib/textpow/syntax/source.inform.syntax +48 -0
- data/lib/textpow/syntax/source.ini.syntax +55 -0
- data/lib/textpow/syntax/source.io.syntax +81 -0
- data/lib/textpow/syntax/source.java-props.syntax +20 -0
- data/lib/textpow/syntax/source.java.syntax +211 -0
- data/lib/textpow/syntax/source.js.greasemonkey.syntax +34 -0
- data/lib/textpow/syntax/source.js.jquery.syntax +114 -0
- data/lib/textpow/syntax/source.js.mootools.syntax +572 -0
- data/lib/textpow/syntax/source.js.prototype.bracketed.syntax +140 -0
- data/lib/textpow/syntax/source.js.prototype.syntax +72 -0
- data/lib/textpow/syntax/source.js.syntax +256 -0
- data/lib/textpow/syntax/source.js.yui.syntax +176 -0
- data/lib/textpow/syntax/source.json.syntax +136 -0
- data/lib/textpow/syntax/source.lex.syntax +219 -0
- data/lib/textpow/syntax/source.lighttpd-config.syntax +54 -0
- data/lib/textpow/syntax/source.lilypond.syntax +492 -0
- data/lib/textpow/syntax/source.lisp.syntax +61 -0
- data/lib/textpow/syntax/source.logo.syntax +29 -0
- data/lib/textpow/syntax/source.logtalk.syntax +152 -0
- data/lib/textpow/syntax/source.lua.syntax +86 -0
- data/lib/textpow/syntax/source.makefile.syntax +36 -0
- data/lib/textpow/syntax/source.matlab.syntax +142 -0
- data/lib/textpow/syntax/source.mel.syntax +92 -0
- data/lib/textpow/syntax/source.mips.syntax +66 -0
- data/lib/textpow/syntax/source.ml.syntax +121 -0
- data/lib/textpow/syntax/source.modula-3.syntax +47 -0
- data/lib/textpow/syntax/source.nant-build.syntax +53 -0
- data/lib/textpow/syntax/source.objc++.syntax +18 -0
- data/lib/textpow/syntax/source.objc.syntax +233 -0
- data/lib/textpow/syntax/source.ocaml.syntax +764 -0
- data/lib/textpow/syntax/source.ocamllex.syntax +167 -0
- data/lib/textpow/syntax/source.ocamlyacc.syntax +184 -0
- data/lib/textpow/syntax/source.open-gl.syntax +14 -0
- data/lib/textpow/syntax/source.pascal.syntax +77 -0
- data/lib/textpow/syntax/source.pascal.vectorscript.syntax +57 -0
- data/lib/textpow/syntax/source.perl.syntax +1113 -0
- data/lib/textpow/syntax/source.php.cake.syntax +55 -0
- data/lib/textpow/syntax/source.plist.tm-grammar.syntax +708 -0
- data/lib/textpow/syntax/source.postscript.syntax +114 -0
- data/lib/textpow/syntax/source.processing.syntax +106 -0
- data/lib/textpow/syntax/source.prolog.syntax +40 -0
- data/lib/textpow/syntax/source.python.django.syntax +21 -0
- data/lib/textpow/syntax/source.python.syntax +868 -0
- data/lib/textpow/syntax/source.qmake.syntax +114 -0
- data/lib/textpow/syntax/source.quake-config.syntax +32 -0
- data/lib/textpow/syntax/source.r-console.syntax +16 -0
- data/lib/textpow/syntax/source.r.syntax +81 -0
- data/lib/textpow/syntax/source.regexp.oniguruma.syntax +107 -0
- data/lib/textpow/syntax/source.regexp.python.syntax +109 -0
- data/lib/textpow/syntax/source.regexp.syntax +50 -0
- data/lib/textpow/syntax/source.remind.syntax +253 -0
- data/lib/textpow/syntax/source.rez.syntax +80 -0
- data/lib/textpow/syntax/source.ruby.experimental.syntax +145 -0
- data/lib/textpow/syntax/source.ruby.rails.syntax +88 -0
- data/lib/textpow/syntax/source.ruby.syntax +1035 -0
- data/lib/textpow/syntax/source.s5.syntax +69 -0
- data/lib/textpow/syntax/source.sass.syntax +45 -0
- data/lib/textpow/syntax/source.scheme.syntax +347 -0
- data/lib/textpow/syntax/source.scilab.syntax +41 -0
- data/lib/textpow/syntax/source.scss.syntax +527 -0
- data/lib/textpow/syntax/source.shell.syntax +384 -0
- data/lib/textpow/syntax/source.slate.syntax +149 -0
- data/lib/textpow/syntax/source.smarty.syntax +63 -0
- data/lib/textpow/syntax/source.sql.ruby.syntax +18 -0
- data/lib/textpow/syntax/source.sql.syntax +237 -0
- data/lib/textpow/syntax/source.ssh-config.syntax +33 -0
- data/lib/textpow/syntax/source.strings.syntax +39 -0
- data/lib/textpow/syntax/source.swig.syntax +57 -0
- data/lib/textpow/syntax/source.tcl.macports.syntax +163 -0
- data/lib/textpow/syntax/source.tcl.syntax +152 -0
- data/lib/textpow/syntax/source.yaml.syntax +160 -0
- data/lib/textpow/syntax/text.active4d-ini.syntax +50 -0
- data/lib/textpow/syntax/text.bbcode.syntax +287 -0
- data/lib/textpow/syntax/text.bibtex.syntax +151 -0
- data/lib/textpow/syntax/text.blog.html.syntax +41 -0
- data/lib/textpow/syntax/text.blog.markdown.syntax +42 -0
- data/lib/textpow/syntax/text.blog.syntax +27 -0
- data/lib/textpow/syntax/text.blog.textile.syntax +27 -0
- data/lib/textpow/syntax/text.gtdalt.syntax +143 -0
- data/lib/textpow/syntax/text.haml.syntax +88 -0
- data/lib/textpow/syntax/text.html.asp.net.syntax +424 -0
- data/lib/textpow/syntax/text.html.asp.syntax +27 -0
- data/lib/textpow/syntax/text.html.basic.syntax +362 -0
- data/lib/textpow/syntax/text.html.cfm.syntax +119 -0
- data/lib/textpow/syntax/text.html.django.syntax +36 -0
- data/lib/textpow/syntax/text.html.dokuwiki.syntax +204 -0
- data/lib/textpow/syntax/text.html.doxygen.syntax +43 -0
- data/lib/textpow/syntax/text.html.markdown.multimarkdown.syntax +39 -0
- data/lib/textpow/syntax/text.html.mason.syntax +119 -0
- data/lib/textpow/syntax/text.html.mediawiki.syntax +567 -0
- data/lib/textpow/syntax/text.html.mt.syntax +162 -0
- data/lib/textpow/syntax/text.html.ruby.syntax +40 -0
- data/lib/textpow/syntax/text.html.strict.active4d.syntax +311 -0
- data/lib/textpow/syntax/text.html.tcl.syntax +26 -0
- data/lib/textpow/syntax/text.html.textile.syntax +215 -0
- data/lib/textpow/syntax/text.html.tt.syntax +121 -0
- data/lib/textpow/syntax/text.html.twiki.syntax +241 -0
- data/lib/textpow/syntax/text.html.xhtml.1-strict.syntax +4027 -0
- data/lib/textpow/syntax/text.log.latex.syntax +50 -0
- data/lib/textpow/syntax/text.mail.markdown.syntax +118 -0
- data/lib/textpow/syntax/text.man.syntax +17 -0
- data/lib/textpow/syntax/text.moinmoin.syntax +189 -0
- data/lib/textpow/syntax/text.plain.gtd.syntax +22 -0
- data/lib/textpow/syntax/text.plain.release-notes.syntax +46 -0
- data/lib/textpow/syntax/text.plain.syntax +32 -0
- data/lib/textpow/syntax/text.plist.syntax +635 -0
- data/lib/textpow/syntax/text.pmwiki.syntax +113 -0
- data/lib/textpow/syntax/text.restructuredtext.syntax +250 -0
- data/lib/textpow/syntax/text.setext.syntax +147 -0
- data/lib/textpow/syntax/text.subversion-commit.syntax +36 -0
- data/lib/textpow/syntax/text.tabular.csv.syntax +68 -0
- data/lib/textpow/syntax/text.tabular.tsv.syntax +50 -0
- data/lib/textpow/syntax/text.tex.latex.beamer.syntax +41 -0
- data/lib/textpow/syntax/text.tex.latex.haskell.syntax +24 -0
- data/lib/textpow/syntax/text.tex.latex.memoir.syntax +64 -0
- data/lib/textpow/syntax/text.tex.latex.rd.syntax +91 -0
- data/lib/textpow/syntax/text.tex.latex.sweave.syntax +84 -0
- data/lib/textpow/syntax/text.tex.latex.syntax +566 -0
- data/lib/textpow/syntax/text.tex.math.syntax +49 -0
- data/lib/textpow/syntax/text.tex.syntax +86 -0
- data/lib/textpow/syntax/text.txt2tags.syntax +79 -0
- data/lib/textpow/syntax/text.xml.apple-dist.syntax +77 -0
- data/lib/textpow/syntax/text.xml.strict.syntax +92 -0
- data/lib/textpow/syntax/text.xml.syntax +180 -0
- data/lib/textpow/syntax/text.xml.xsl.syntax +60 -0
- data/lib/textpow/version.rb +3 -0
- data/spec/fixtures/objeck.plist +107 -0
- data/spec/fixtures/utf8.txt +1 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/textpow/score_manager_spec.rb +20 -0
- data/spec/textpow/syntax_files_spec.rb +26 -0
- data/spec/textpow/syntax_spec.rb +225 -0
- data/spec/textpow_spec.rb +57 -0
- data/textpow.gemspec +19 -0
- metadata +246 -68
- data/Manifest.txt +0 -13
- data/mm/manual.mm +0 -266
- data/test/test_textpow.rb +0 -25
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Textpow do
|
4
|
+
before do
|
5
|
+
Textpow.send(:class_variable_set, "@@syntax", {})
|
6
|
+
end
|
7
|
+
|
8
|
+
it "has a version" do
|
9
|
+
Textpow::Version =~ /^\d\.\d\.\d$/
|
10
|
+
end
|
11
|
+
|
12
|
+
it "has syntax files named after their scopeName" do
|
13
|
+
Dir["#{Textpow.syntax_path}/*"].each do |file|
|
14
|
+
next if File.directory?(file)
|
15
|
+
(YAML.load_file(file)['scopeName'] + '.syntax').should == File.basename(file)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "syntax" do
|
20
|
+
it "finds syntax by path" do
|
21
|
+
Textpow.syntax('lib/textpow/syntax/source.ruby.syntax').name.should == 'Ruby'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "finds a syntax by scopeName" do
|
25
|
+
Textpow.syntax('source.ruby').name.should == 'Ruby'
|
26
|
+
end
|
27
|
+
|
28
|
+
it "caches found syntax" do
|
29
|
+
Textpow.syntax('ruby').name.should == 'Ruby'
|
30
|
+
Dir.should_not_receive(:glob)
|
31
|
+
Textpow.syntax('ruby').name.should == 'Ruby'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "finds a syntax by name parts" do
|
35
|
+
Textpow.syntax('ruby').name.should == 'Ruby'
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns the found syntax for mixed case" do
|
39
|
+
Textpow.syntax('RuBy').name.should == 'Ruby'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns nil for unfound syntax" do
|
43
|
+
Textpow.syntax('buby').should == nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "does not find directories" do
|
47
|
+
Textpow.syntax('lib').should == nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "caches nil for unfound syntax" do
|
51
|
+
Dir.should_receive(:glob).and_return []
|
52
|
+
Textpow.syntax('buby').should == nil
|
53
|
+
Dir.should_not_receive(:glob)
|
54
|
+
Textpow.syntax('buby').should == nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/textpow.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "textpow/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "textpow"
|
6
|
+
s.version = Textpow::Version
|
7
|
+
s.authors = ["Dizan Vasquez", "Spox", "Chris Hoffman", "Michael Grosser"]
|
8
|
+
s.email = ["michael@grosser.it"]
|
9
|
+
s.homepage = "http://github.com/grosser/textpow"
|
10
|
+
s.summary = "A library for parsing TextMate bundles"
|
11
|
+
s.description = s.summary
|
12
|
+
s.license = "MIT"
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.executables = ["plist2yaml", "plist2syntax"]
|
16
|
+
s.rdoc_options = ["--main", "README.rdoc"]
|
17
|
+
|
18
|
+
s.add_dependency "plist", '>=3.0.1'
|
19
|
+
end
|
metadata
CHANGED
@@ -1,86 +1,264 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: textpow
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
+
authors:
|
7
8
|
- Dizan Vasquez
|
9
|
+
- Spox
|
10
|
+
- Chris Hoffman
|
11
|
+
- Michael Grosser
|
8
12
|
autorequire:
|
9
13
|
bindir: bin
|
10
14
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: oniguruma
|
17
|
-
version_requirement:
|
18
|
-
version_requirements: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.1.0
|
23
|
-
version:
|
24
|
-
- !ruby/object:Gem::Dependency
|
15
|
+
date: 2012-08-19 00:00:00.000000000 Z
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
25
18
|
name: plist
|
26
|
-
|
27
|
-
|
28
|
-
requirements:
|
29
|
-
- -
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: 3.0.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ! '>='
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 3.0.1
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.0.1
|
33
|
+
description: A library for parsing TextMate bundles
|
34
|
+
email:
|
35
|
+
- michael@grosser.it
|
36
|
+
executables:
|
36
37
|
- plist2yaml
|
37
38
|
- plist2syntax
|
38
39
|
extensions: []
|
39
|
-
|
40
|
-
|
41
|
-
-
|
42
|
-
-
|
43
|
-
-
|
44
|
-
|
45
|
-
-
|
40
|
+
extra_rdoc_files: []
|
41
|
+
files:
|
42
|
+
- .travis.yml
|
43
|
+
- Gemfile
|
44
|
+
- Gemfile.lock
|
45
|
+
- History.rdoc
|
46
|
+
- MIT-LICENSE.txt
|
47
|
+
- README.rdoc
|
48
|
+
- Rakefile
|
46
49
|
- bin/plist2syntax
|
50
|
+
- bin/plist2yaml
|
51
|
+
- examples/benchmark_js.rb
|
52
|
+
- examples/jquery.js
|
47
53
|
- lib/textpow.rb
|
48
|
-
- lib/textpow
|
49
|
-
- lib/textpow/syntax.rb
|
50
|
-
- lib/textpow/score_manager.rb
|
51
54
|
- lib/textpow/debug_processor.rb
|
52
|
-
-
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
|
59
|
-
|
55
|
+
- lib/textpow/recording_processor.rb
|
56
|
+
- lib/textpow/score_manager.rb
|
57
|
+
- lib/textpow/syntax.rb
|
58
|
+
- lib/textpow/syntax/broken/markdown.syntax
|
59
|
+
- lib/textpow/syntax/broken/php.syntax
|
60
|
+
- lib/textpow/syntax/buggy/nemerle.syntax
|
61
|
+
- lib/textpow/syntax/old/YAML.yaml
|
62
|
+
- lib/textpow/syntax/old/txt2tags.yaml
|
63
|
+
- lib/textpow/syntax/source.actionscript.syntax
|
64
|
+
- lib/textpow/syntax/source.active4d.library.syntax
|
65
|
+
- lib/textpow/syntax/source.active4d.syntax
|
66
|
+
- lib/textpow/syntax/source.ada.syntax
|
67
|
+
- lib/textpow/syntax/source.antlr.syntax
|
68
|
+
- lib/textpow/syntax/source.apache-config.mod_perl.syntax
|
69
|
+
- lib/textpow/syntax/source.apache-config.syntax
|
70
|
+
- lib/textpow/syntax/source.applescript.syntax
|
71
|
+
- lib/textpow/syntax/source.asp.syntax
|
72
|
+
- lib/textpow/syntax/source.asp.vb.net.syntax
|
73
|
+
- lib/textpow/syntax/source.c++.qt.syntax
|
74
|
+
- lib/textpow/syntax/source.c++.syntax
|
75
|
+
- lib/textpow/syntax/source.c-sharp.syntax
|
76
|
+
- lib/textpow/syntax/source.c.ragel.syntax
|
77
|
+
- lib/textpow/syntax/source.c.syntax
|
78
|
+
- lib/textpow/syntax/source.camlp4.ocaml.syntax
|
79
|
+
- lib/textpow/syntax/source.cm.syntax
|
80
|
+
- lib/textpow/syntax/source.coffee.syntax
|
81
|
+
- lib/textpow/syntax/source.context-free.syntax
|
82
|
+
- lib/textpow/syntax/source.css.beta.syntax
|
83
|
+
- lib/textpow/syntax/source.css.syntax
|
84
|
+
- lib/textpow/syntax/source.d.syntax
|
85
|
+
- lib/textpow/syntax/source.diff.syntax
|
86
|
+
- lib/textpow/syntax/source.dot.syntax
|
87
|
+
- lib/textpow/syntax/source.dylan.syntax
|
88
|
+
- lib/textpow/syntax/source.eiffel.syntax
|
89
|
+
- lib/textpow/syntax/source.erlang.syntax
|
90
|
+
- lib/textpow/syntax/source.fortran.syntax
|
91
|
+
- lib/textpow/syntax/source.fscript.syntax
|
92
|
+
- lib/textpow/syntax/source.fxscript.syntax
|
93
|
+
- lib/textpow/syntax/source.gri.syntax
|
94
|
+
- lib/textpow/syntax/source.groovy.groovy.syntax
|
95
|
+
- lib/textpow/syntax/source.haskell.syntax
|
96
|
+
- lib/textpow/syntax/source.icalendar.syntax
|
97
|
+
- lib/textpow/syntax/source.inform.syntax
|
98
|
+
- lib/textpow/syntax/source.ini.syntax
|
99
|
+
- lib/textpow/syntax/source.io.syntax
|
100
|
+
- lib/textpow/syntax/source.java-props.syntax
|
101
|
+
- lib/textpow/syntax/source.java.syntax
|
102
|
+
- lib/textpow/syntax/source.js.greasemonkey.syntax
|
103
|
+
- lib/textpow/syntax/source.js.jquery.syntax
|
104
|
+
- lib/textpow/syntax/source.js.mootools.syntax
|
105
|
+
- lib/textpow/syntax/source.js.prototype.bracketed.syntax
|
106
|
+
- lib/textpow/syntax/source.js.prototype.syntax
|
107
|
+
- lib/textpow/syntax/source.js.syntax
|
108
|
+
- lib/textpow/syntax/source.js.yui.syntax
|
109
|
+
- lib/textpow/syntax/source.json.syntax
|
110
|
+
- lib/textpow/syntax/source.lex.syntax
|
111
|
+
- lib/textpow/syntax/source.lighttpd-config.syntax
|
112
|
+
- lib/textpow/syntax/source.lilypond.syntax
|
113
|
+
- lib/textpow/syntax/source.lisp.syntax
|
114
|
+
- lib/textpow/syntax/source.logo.syntax
|
115
|
+
- lib/textpow/syntax/source.logtalk.syntax
|
116
|
+
- lib/textpow/syntax/source.lua.syntax
|
117
|
+
- lib/textpow/syntax/source.makefile.syntax
|
118
|
+
- lib/textpow/syntax/source.matlab.syntax
|
119
|
+
- lib/textpow/syntax/source.mel.syntax
|
120
|
+
- lib/textpow/syntax/source.mips.syntax
|
121
|
+
- lib/textpow/syntax/source.ml.syntax
|
122
|
+
- lib/textpow/syntax/source.modula-3.syntax
|
123
|
+
- lib/textpow/syntax/source.nant-build.syntax
|
124
|
+
- lib/textpow/syntax/source.objc++.syntax
|
125
|
+
- lib/textpow/syntax/source.objc.syntax
|
126
|
+
- lib/textpow/syntax/source.ocaml.syntax
|
127
|
+
- lib/textpow/syntax/source.ocamllex.syntax
|
128
|
+
- lib/textpow/syntax/source.ocamlyacc.syntax
|
129
|
+
- lib/textpow/syntax/source.open-gl.syntax
|
130
|
+
- lib/textpow/syntax/source.pascal.syntax
|
131
|
+
- lib/textpow/syntax/source.pascal.vectorscript.syntax
|
132
|
+
- lib/textpow/syntax/source.perl.syntax
|
133
|
+
- lib/textpow/syntax/source.php.cake.syntax
|
134
|
+
- lib/textpow/syntax/source.plist.tm-grammar.syntax
|
135
|
+
- lib/textpow/syntax/source.postscript.syntax
|
136
|
+
- lib/textpow/syntax/source.processing.syntax
|
137
|
+
- lib/textpow/syntax/source.prolog.syntax
|
138
|
+
- lib/textpow/syntax/source.python.django.syntax
|
139
|
+
- lib/textpow/syntax/source.python.syntax
|
140
|
+
- lib/textpow/syntax/source.qmake.syntax
|
141
|
+
- lib/textpow/syntax/source.quake-config.syntax
|
142
|
+
- lib/textpow/syntax/source.r-console.syntax
|
143
|
+
- lib/textpow/syntax/source.r.syntax
|
144
|
+
- lib/textpow/syntax/source.regexp.oniguruma.syntax
|
145
|
+
- lib/textpow/syntax/source.regexp.python.syntax
|
146
|
+
- lib/textpow/syntax/source.regexp.syntax
|
147
|
+
- lib/textpow/syntax/source.remind.syntax
|
148
|
+
- lib/textpow/syntax/source.rez.syntax
|
149
|
+
- lib/textpow/syntax/source.ruby.experimental.syntax
|
150
|
+
- lib/textpow/syntax/source.ruby.rails.syntax
|
151
|
+
- lib/textpow/syntax/source.ruby.syntax
|
152
|
+
- lib/textpow/syntax/source.s5.syntax
|
153
|
+
- lib/textpow/syntax/source.sass.syntax
|
154
|
+
- lib/textpow/syntax/source.scheme.syntax
|
155
|
+
- lib/textpow/syntax/source.scilab.syntax
|
156
|
+
- lib/textpow/syntax/source.scss.syntax
|
157
|
+
- lib/textpow/syntax/source.shell.syntax
|
158
|
+
- lib/textpow/syntax/source.slate.syntax
|
159
|
+
- lib/textpow/syntax/source.smarty.syntax
|
160
|
+
- lib/textpow/syntax/source.sql.ruby.syntax
|
161
|
+
- lib/textpow/syntax/source.sql.syntax
|
162
|
+
- lib/textpow/syntax/source.ssh-config.syntax
|
163
|
+
- lib/textpow/syntax/source.strings.syntax
|
164
|
+
- lib/textpow/syntax/source.swig.syntax
|
165
|
+
- lib/textpow/syntax/source.tcl.macports.syntax
|
166
|
+
- lib/textpow/syntax/source.tcl.syntax
|
167
|
+
- lib/textpow/syntax/source.yaml.syntax
|
168
|
+
- lib/textpow/syntax/text.active4d-ini.syntax
|
169
|
+
- lib/textpow/syntax/text.bbcode.syntax
|
170
|
+
- lib/textpow/syntax/text.bibtex.syntax
|
171
|
+
- lib/textpow/syntax/text.blog.html.syntax
|
172
|
+
- lib/textpow/syntax/text.blog.markdown.syntax
|
173
|
+
- lib/textpow/syntax/text.blog.syntax
|
174
|
+
- lib/textpow/syntax/text.blog.textile.syntax
|
175
|
+
- lib/textpow/syntax/text.gtdalt.syntax
|
176
|
+
- lib/textpow/syntax/text.haml.syntax
|
177
|
+
- lib/textpow/syntax/text.html.asp.net.syntax
|
178
|
+
- lib/textpow/syntax/text.html.asp.syntax
|
179
|
+
- lib/textpow/syntax/text.html.basic.syntax
|
180
|
+
- lib/textpow/syntax/text.html.cfm.syntax
|
181
|
+
- lib/textpow/syntax/text.html.django.syntax
|
182
|
+
- lib/textpow/syntax/text.html.dokuwiki.syntax
|
183
|
+
- lib/textpow/syntax/text.html.doxygen.syntax
|
184
|
+
- lib/textpow/syntax/text.html.markdown.multimarkdown.syntax
|
185
|
+
- lib/textpow/syntax/text.html.mason.syntax
|
186
|
+
- lib/textpow/syntax/text.html.mediawiki.syntax
|
187
|
+
- lib/textpow/syntax/text.html.mt.syntax
|
188
|
+
- lib/textpow/syntax/text.html.ruby.syntax
|
189
|
+
- lib/textpow/syntax/text.html.strict.active4d.syntax
|
190
|
+
- lib/textpow/syntax/text.html.tcl.syntax
|
191
|
+
- lib/textpow/syntax/text.html.textile.syntax
|
192
|
+
- lib/textpow/syntax/text.html.tt.syntax
|
193
|
+
- lib/textpow/syntax/text.html.twiki.syntax
|
194
|
+
- lib/textpow/syntax/text.html.xhtml.1-strict.syntax
|
195
|
+
- lib/textpow/syntax/text.log.latex.syntax
|
196
|
+
- lib/textpow/syntax/text.mail.markdown.syntax
|
197
|
+
- lib/textpow/syntax/text.man.syntax
|
198
|
+
- lib/textpow/syntax/text.moinmoin.syntax
|
199
|
+
- lib/textpow/syntax/text.plain.gtd.syntax
|
200
|
+
- lib/textpow/syntax/text.plain.release-notes.syntax
|
201
|
+
- lib/textpow/syntax/text.plain.syntax
|
202
|
+
- lib/textpow/syntax/text.plist.syntax
|
203
|
+
- lib/textpow/syntax/text.pmwiki.syntax
|
204
|
+
- lib/textpow/syntax/text.restructuredtext.syntax
|
205
|
+
- lib/textpow/syntax/text.setext.syntax
|
206
|
+
- lib/textpow/syntax/text.subversion-commit.syntax
|
207
|
+
- lib/textpow/syntax/text.tabular.csv.syntax
|
208
|
+
- lib/textpow/syntax/text.tabular.tsv.syntax
|
209
|
+
- lib/textpow/syntax/text.tex.latex.beamer.syntax
|
210
|
+
- lib/textpow/syntax/text.tex.latex.haskell.syntax
|
211
|
+
- lib/textpow/syntax/text.tex.latex.memoir.syntax
|
212
|
+
- lib/textpow/syntax/text.tex.latex.rd.syntax
|
213
|
+
- lib/textpow/syntax/text.tex.latex.sweave.syntax
|
214
|
+
- lib/textpow/syntax/text.tex.latex.syntax
|
215
|
+
- lib/textpow/syntax/text.tex.math.syntax
|
216
|
+
- lib/textpow/syntax/text.tex.syntax
|
217
|
+
- lib/textpow/syntax/text.txt2tags.syntax
|
218
|
+
- lib/textpow/syntax/text.xml.apple-dist.syntax
|
219
|
+
- lib/textpow/syntax/text.xml.strict.syntax
|
220
|
+
- lib/textpow/syntax/text.xml.syntax
|
221
|
+
- lib/textpow/syntax/text.xml.xsl.syntax
|
222
|
+
- lib/textpow/version.rb
|
223
|
+
- spec/fixtures/objeck.plist
|
224
|
+
- spec/fixtures/utf8.txt
|
225
|
+
- spec/spec_helper.rb
|
226
|
+
- spec/textpow/score_manager_spec.rb
|
227
|
+
- spec/textpow/syntax_files_spec.rb
|
228
|
+
- spec/textpow/syntax_spec.rb
|
229
|
+
- spec/textpow_spec.rb
|
230
|
+
- textpow.gemspec
|
231
|
+
homepage: http://github.com/grosser/textpow
|
232
|
+
licenses:
|
233
|
+
- MIT
|
60
234
|
post_install_message:
|
61
|
-
rdoc_options:
|
235
|
+
rdoc_options:
|
62
236
|
- --main
|
63
|
-
- README.
|
64
|
-
require_paths:
|
237
|
+
- README.rdoc
|
238
|
+
require_paths:
|
65
239
|
- lib
|
66
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
240
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
241
|
+
none: false
|
242
|
+
requirements:
|
243
|
+
- - ! '>='
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '0'
|
246
|
+
segments:
|
247
|
+
- 0
|
248
|
+
hash: 1600551724538838794
|
249
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
251
|
+
requirements:
|
252
|
+
- - ! '>='
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: '0'
|
255
|
+
segments:
|
256
|
+
- 0
|
257
|
+
hash: 1600551724538838794
|
78
258
|
requirements: []
|
79
|
-
|
80
|
-
|
81
|
-
rubygems_version: 1.0.1
|
259
|
+
rubyforge_project:
|
260
|
+
rubygems_version: 1.8.24
|
82
261
|
signing_key:
|
83
|
-
specification_version:
|
84
|
-
summary:
|
85
|
-
test_files:
|
86
|
-
- test/test_textpow.rb
|
262
|
+
specification_version: 3
|
263
|
+
summary: A library for parsing TextMate bundles
|
264
|
+
test_files: []
|
data/Manifest.txt
DELETED
data/mm/manual.mm
DELETED
@@ -1,266 +0,0 @@
|
|
1
|
-
~ Textpow ~
|
2
|
-
~~ A Library for Processing TextMate Bundles ~~
|
3
|
-
|
4
|
-
#Introduction# | index
|
5
|
-
|
6
|
-
= What is Textpow? =
|
7
|
-
Textpow is a library to parse and process
|
8
|
-
[Textmate http://macromates.com] bundles. Although created created for their
|
9
|
-
use in a word processor, these bundles have many other uses. For example, we
|
10
|
-
have used them to create a syntax highligting
|
11
|
-
[utility http://ultraviolet.rubyforge.org] and also the markup rendering
|
12
|
-
[engine http://mama.rubyforge.org] used to render this
|
13
|
-
documentation.
|
14
|
-
|
15
|
-
= Requirements =
|
16
|
-
|
17
|
-
* [Oniguruma http://www.geocities.jp/kosako3/oniguruma/] regular expression library (/>= 4.x.x/)
|
18
|
-
* [Oniguruma for Ruby http://www.geocities.jp/kosako3/oniguruma/] ruby bindings for oniguruma (/>= 1.1.x/)
|
19
|
-
|
20
|
-
= Installation =
|
21
|
-
|
22
|
-
If you have [rubygems http://docs.rubygems.org/] installation is straightforward by typing
|
23
|
-
(as root if needed):
|
24
|
-
|
25
|
-
--------hl shell-unix-generic,,false------
|
26
|
-
gem install -r textpow --include-dependencies
|
27
|
-
------------------------------------------
|
28
|
-
|
29
|
-
If you prefer to get the sources, the last stable version may be
|
30
|
-
downloaded [here http://rubyforge.org/frs/?group_id=3513].
|
31
|
-
|
32
|
-
= Status =
|
33
|
-
|
34
|
-
The current version of Textpow (0.9.0) is able to parse syntax (/tmLanguage/, /tmSyntax/)
|
35
|
-
and theme (/tmTheme/) files.
|
36
|
-
|
37
|
-
#Use#
|
38
|
-
|
39
|
-
= Syntax files and text parsing =
|
40
|
-
|
41
|
-
The idea of parsing is to process some /input text/ using the rules defined in
|
42
|
-
a /syntax [file > syntax_files]/ (which are discussed in detail in Textmate
|
43
|
-
[documentation http://macromates.com/textmate/manual/language_grammars#language_grammars]).
|
44
|
-
The text is parsed line by line, and, events are sent to a /[processor > processors]/
|
45
|
-
according to how the text matches the syntax file.
|
46
|
-
|
47
|
-
-------dot parsing_overview, Overview of the parsing process.----------
|
48
|
-
digraph G {
|
49
|
-
node [fontname=Helvetica, fontsize=10];
|
50
|
-
edge [fontname=Helvetica, style=dashed, fontsize=10, decorate=true, fontcolor="#0066aa"];
|
51
|
-
center=true;
|
52
|
-
{
|
53
|
-
rank=same;
|
54
|
-
node [shape=invhouse, style="filled", color="#333399", fillcolor="#6666cc", fontcolor="white"];
|
55
|
-
syntax_file[label="Syntax file"];
|
56
|
-
text[label="Input text"];
|
57
|
-
}
|
58
|
-
{
|
59
|
-
node [shape=box, style="filled", color="#993333", fillcolor="#cc6666", fontcolor="white"]
|
60
|
-
syntax_object[label="SyntaxNode"];
|
61
|
-
processor[label="Processor", shape=box];
|
62
|
-
}
|
63
|
-
parse [label="", style=invis, fontsize=0,height=0,width=0,shape=none];
|
64
|
-
rank=same{syntax_object; parse};
|
65
|
-
|
66
|
-
syntax_file -> syntax_object [label=" SyntaxNode#load"];
|
67
|
-
syntax_object -> parse [arrowhead=none];
|
68
|
-
text -> parse [arrowhead=none];
|
69
|
-
parse -> processor [label=" SyntaxNode#parse"];
|
70
|
-
|
71
|
-
}
|
72
|
-
-----------------------------------------------------------------------
|
73
|
-
|
74
|
-
= For the impatient =
|
75
|
-
|
76
|
-
Parsing a file using Textpow is as easy as 1-2-3!
|
77
|
-
|
78
|
-
1. Load the Syntax File:
|
79
|
-
|
80
|
-
---hl ruby,,false---
|
81
|
-
require 'textpow'
|
82
|
-
syntax = Textpow::SyntaxNode.load("ruby.tmSyntax")
|
83
|
-
-------------
|
84
|
-
|
85
|
-
2. Initialize a processor:
|
86
|
-
---hl ruby,,false---
|
87
|
-
processor = Textpow::DebugProcessor.new
|
88
|
-
-------------
|
89
|
-
|
90
|
-
3. Parse some text:
|
91
|
-
---hl ruby,,false---
|
92
|
-
syntax.parse( text, processor )
|
93
|
-
-------------
|
94
|
-
|
95
|
-
= The gory details =
|
96
|
-
|
97
|
-
|
98
|
-
== Syntax files == | syntax_files
|
99
|
-
At the heart of syntax parsing are ..., well, syntax files. Lets see for instance
|
100
|
-
the example syntax that appears in textmate's
|
101
|
-
[documentation http://macromates.com/textmate/manual/language_grammars#language_grammars]:
|
102
|
-
|
103
|
-
|
104
|
-
---------hl property_list---------
|
105
|
-
{ scopeName = 'source.untitled';
|
106
|
-
fileTypes = ( txt );
|
107
|
-
foldingStartMarker = '\{\s*$';
|
108
|
-
foldingStopMarker = '^\s*\}';
|
109
|
-
patterns = (
|
110
|
-
{ name = 'keyword.control.untitled';
|
111
|
-
match = '\b(if|while|for|return)\b';
|
112
|
-
},
|
113
|
-
{ name = 'string.quoted.double.untitled';
|
114
|
-
begin = '"';
|
115
|
-
end = '"';
|
116
|
-
patterns = (
|
117
|
-
{ name = 'constant.character.escape.untitled';
|
118
|
-
match = '\\.';
|
119
|
-
}
|
120
|
-
);
|
121
|
-
},
|
122
|
-
);
|
123
|
-
}
|
124
|
-
----------------------------------
|
125
|
-
|
126
|
-
But Textpow is not able to parse text pfiles. However, in practice this is not a problem,
|
127
|
-
since it is possible to convert both text and binary pfiles to an XML format. Indeed, all
|
128
|
-
the syntaxes in the Textmate syntax [repository http://macromates.com/svn/Bundles/trunk/Bundles/]
|
129
|
-
are in XML format:
|
130
|
-
|
131
|
-
---------hl xml---------
|
132
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
133
|
-
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
134
|
-
<plist version="1.0">
|
135
|
-
<dict>
|
136
|
-
<key>scopeName</key>
|
137
|
-
<string>source.untitled</string>
|
138
|
-
<key>fileTypes</key>
|
139
|
-
<array>
|
140
|
-
<string>txt</string>
|
141
|
-
</array>
|
142
|
-
<key>foldingStartMarker</key>
|
143
|
-
<string>\{\s*$</string>
|
144
|
-
<key>foldingStopMarker</key>
|
145
|
-
<string>^\s*\}</string>
|
146
|
-
<key>patterns</key>
|
147
|
-
<array>
|
148
|
-
<dict>
|
149
|
-
<key>name</key>
|
150
|
-
<string>keyword.control.untitled</string>
|
151
|
-
<key>match</key>
|
152
|
-
<string>\b(if|while|for|return)\b</string>
|
153
|
-
</dict>
|
154
|
-
<dict>
|
155
|
-
<key>name</key>
|
156
|
-
<string>string.quoted.double.untitled</string>
|
157
|
-
<key>begin</key>
|
158
|
-
<string>"</string>
|
159
|
-
<key>end</key>
|
160
|
-
<string>"</string>
|
161
|
-
<key>patterns</key>
|
162
|
-
<array>
|
163
|
-
<dict>
|
164
|
-
<key>name</key>
|
165
|
-
<string>constant.character.escape.untitled</string>
|
166
|
-
<key>match</key>
|
167
|
-
<string>\\.</string>
|
168
|
-
</dict>
|
169
|
-
</array>
|
170
|
-
</dict>
|
171
|
-
</array>
|
172
|
-
</dict>
|
173
|
-
------------------------
|
174
|
-
|
175
|
-
Of course, most people find XML both ugly and cumbersome. Fortunately, it is
|
176
|
-
also possible to store syntax files in YAML format, which is much easier to
|
177
|
-
read:
|
178
|
-
|
179
|
-
-------------hl yaml---------------
|
180
|
-
---
|
181
|
-
fileTypes:
|
182
|
-
- txt
|
183
|
-
scopeName: source.untitled
|
184
|
-
foldingStartMarker: \{\s*$
|
185
|
-
foldingStopMarker: ^\s*\}
|
186
|
-
patterns:
|
187
|
-
- name: keyword.control.untitled
|
188
|
-
match: \b(if|while|for|return)\b
|
189
|
-
- name: string.quoted.double.untitled
|
190
|
-
begin: '"'
|
191
|
-
end: '"'
|
192
|
-
patterns:
|
193
|
-
- name: constant.character.escape.untitled
|
194
|
-
match: \\.
|
195
|
-
-----------------------------------
|
196
|
-
|
197
|
-
== Processors == | processors
|
198
|
-
|
199
|
-
Until now we have talked about the parsing process without explaining what
|
200
|
-
it is exactly. Basically, parsing consists in reading text from a string or
|
201
|
-
file and applying tags to parts of the text according to what has been
|
202
|
-
specified in the [syntax file > syntax_files].
|
203
|
-
|
204
|
-
In textpow, the process takes place line by line, from the beginning to the
|
205
|
-
end and from left to right for every line. As the text is parsed, events are
|
206
|
-
sent to a /processor/ object when a tag is open or closed and so on.
|
207
|
-
A processor is any object which implements one or more of the following
|
208
|
-
methods:
|
209
|
-
|
210
|
-
------------hl ruby--------------
|
211
|
-
class Processor
|
212
|
-
def open_tag name, position
|
213
|
-
end
|
214
|
-
|
215
|
-
def close_tag name, position
|
216
|
-
end
|
217
|
-
|
218
|
-
def new_line line
|
219
|
-
end
|
220
|
-
|
221
|
-
def start_parsing name
|
222
|
-
end
|
223
|
-
|
224
|
-
def end_parsing name
|
225
|
-
end
|
226
|
-
end
|
227
|
-
---------------------------------
|
228
|
-
|
229
|
-
* `open_tag`. Is called when a new tag is opened, it receives the tag's name and
|
230
|
-
its position (relative to the current line).
|
231
|
-
* `close_tag`. The same that `open_tag`, but it is called when a tag is closed.
|
232
|
-
* `new_line`. Is called every time that a new line is processed, it receives the
|
233
|
-
line's contents.
|
234
|
-
* `start_parsing`. Is called once at the beginning of the parsing process. It
|
235
|
-
receives the scope name for the syntax being used.
|
236
|
-
* `end_parsing`. Is called once after all the input text has been parsed. It
|
237
|
-
receives the scope name for the syntax being used.
|
238
|
-
|
239
|
-
Textpow ensures that the methods are called in parsing order, thus,
|
240
|
-
for example, if there are two subsequent calls to `open_tag`, the first
|
241
|
-
having `name="text.string", position=10` and the second having
|
242
|
-
`name="markup.string", position=10`, it should be understood that the
|
243
|
-
`"markup.string"` tag is /inside/ the `"text.string"` tag.
|
244
|
-
|
245
|
-
# Links #
|
246
|
-
|
247
|
-
|
248
|
-
= Rubyforge project page =
|
249
|
-
|
250
|
-
* [Textpow http://rubyforge.org/projects/textpow].
|
251
|
-
|
252
|
-
= Documentation =
|
253
|
-
|
254
|
-
* [Textmate documentation http://macromates.com/textmate/manual/].
|
255
|
-
* [YAML cookbook http://yaml4r.sourceforge.net/cookbook/].
|
256
|
-
|
257
|
-
= Requirements =
|
258
|
-
|
259
|
-
* [Oniguruma http://www.geocities.jp/kosako3/oniguruma/].
|
260
|
-
* [Oniguruma for ruby http://rubyforge.org/projects/oniguruma/].
|
261
|
-
* [Ruby plist parsing library http://rubyforge.org/projects/plist].
|
262
|
-
|
263
|
-
= Projects using Textpow =
|
264
|
-
|
265
|
-
* [Ultraviolet Syntax Highlighting Engine http://ultraviolet.rubyforge.org/].
|
266
|
-
* [Macaronic markup engine http://mama.rubyforge.org/].
|