wptemplates 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Wptemplates do
4
+
5
+ it "parses some text into a soup with a single text node" do
6
+ parsed = subject.parse(" some text ")
7
+ expect(parsed.length).to eq(1)
8
+ expect(parsed.text).to eq(" some text ")
9
+ expect(parsed[0].text).to eq(" some text ")
10
+ expect(parsed.templates).to eq([])
11
+ end
12
+
13
+ it "parses the empty string into a soup with a single empty text node" do
14
+ parsed = subject.parse("")
15
+ expect(parsed.length).to eq(1)
16
+ expect(parsed.text).to eq("")
17
+ expect(parsed[0].text).to eq("")
18
+ expect(parsed.templates).to eq([])
19
+ end
20
+
21
+ it "removes normal html comments" do
22
+ parsed = subject.parse("a<!-- b -->a")
23
+ expect(parsed.length).to eq(1)
24
+ expect(parsed.text).to eq("aa")
25
+ expect(parsed[0].text).to eq("aa")
26
+ expect(parsed.templates).to eq([])
27
+ expect(parsed.links).to eq([])
28
+ end
29
+
30
+ it "removes html comments with excess minus" do
31
+ parsed = subject.parse("a<!--- b -->a")
32
+ expect(parsed.length).to eq(1)
33
+ expect(parsed.text).to eq("aa")
34
+ expect(parsed[0].text).to eq("aa")
35
+ expect(parsed.templates).to eq([])
36
+ expect(parsed.links).to eq([])
37
+ end
38
+
39
+ it "leaves stuff between two comments" do
40
+ parsed = subject.parse("a<!--- b -->c<!--- b -->a")
41
+ expect(parsed.length).to eq(1)
42
+ expect(parsed.text).to eq("aca")
43
+ expect(parsed[0].text).to eq("aca")
44
+ expect(parsed.templates).to eq([])
45
+ expect(parsed.links).to eq([])
46
+ end
47
+
48
+ it "removes html comments with invalid combinations of <!-> in between" do
49
+ parsed = subject.parse("d1<!-- d2 -><!-- d3 -- >d4<! -- > d6-->d6")
50
+ expect(parsed.length).to eq(1)
51
+ expect(parsed.text).to eq("d1d6")
52
+ expect(parsed[0].text).to eq("d1d6")
53
+ expect(parsed.templates).to eq([])
54
+ expect(parsed.links).to eq([])
55
+ end
56
+
57
+ it "removes html comments which remove links closing tag" do
58
+ parsed = subject.parse("[[a|<!-- ]] -->")
59
+ expect(parsed.length).to eq(1)
60
+ expect(parsed.text).to eq("[[a|")
61
+ expect(parsed[0].text).to eq("[[a|")
62
+ expect(parsed.templates).to eq([])
63
+ expect(parsed.links).to eq([])
64
+ end
65
+
66
+ it "removes html comments which remove links opening tag" do
67
+ parsed = subject.parse("<!-- [[a| -->]]")
68
+ expect(parsed.length).to eq(1)
69
+ expect(parsed.text).to eq("]]")
70
+ expect(parsed[0].text).to eq("]]")
71
+ expect(parsed.templates).to eq([])
72
+ expect(parsed.links).to eq([])
73
+ end
74
+
75
+ end
@@ -0,0 +1,4 @@
1
+
2
+ task :browser do
3
+ ENV["DEVELOPMENT_WEBBROWSER"] = "chromium"
4
+ end
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,7 @@
1
+ desc "Open an irb session preloaded with wptemplates library"
2
+ task :console do
3
+ ARGV.clear
4
+ ARGV.push "-f", "-I", "lib", "-r", "./tasks/irbrc"
5
+ require 'irb'
6
+ IRB.start
7
+ end
data/tasks/irbrc.rb ADDED
@@ -0,0 +1,22 @@
1
+
2
+ #require 'wirble'
3
+ #%w{init colorize}.each { |str| Wirble.send(str) }
4
+
5
+ require 'irb/completion'
6
+
7
+ require 'irb/ext/save-history'
8
+ IRB.conf[:SAVE_HISTORY] = 500
9
+ IRB.conf[:HISTORY_FILE] = ".irb_history"
10
+
11
+ IRB.conf[:AUTO_INDENT] = true
12
+
13
+ require 'pp'
14
+ require 'wptemplates'
15
+
16
+ puts "Welcome to Wptemplates #{Wptemplates::VERSION}!"
17
+
18
+ class Symbol
19
+ def to_proc
20
+ proc { |obj, *args| obj.send(self, *args) }
21
+ end
22
+ end
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,16 @@
1
+ require 'rdoc/task'
2
+
3
+ RDoc::Task.new(:rdoc) do |rdoc|
4
+ rdoc.rdoc_dir = 'rdoc'
5
+ rdoc.title = 'Wptemplates'
6
+ rdoc.options << '--line-numbers'
7
+ rdoc.main = 'README.rdoc'
8
+ rdoc.rdoc_files.include('README.rdoc', 'lib/**/*.rb')
9
+ end
10
+
11
+ namespace :rdoc do
12
+ desc "Open the rdocs in browser"
13
+ task :open => [:rdoc, :browser] do
14
+ sh "#{ENV["DEVELOPMENT_WEBBROWSER"]} rdoc/index.html"
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+
2
+ task :spec => 'spec/examples_spec.rb'
3
+
4
+ task 'spec/examples_spec.rb' => 'README.md' do
5
+ puts "Regenerating spec/examples_spec.rb"
6
+ readme = File.open('README.md'){ |f| f.read }
7
+ test = "require 'spec_helper'\n\ndescribe 'examples' do\n\n"
8
+ readme.scan(/<\!-- *EXAMPLES:(.*?) *-->(.*?)<\!-- *\/EXAMPLES *-->/m) do |name,code|
9
+ if name == "INIT"
10
+ test << code
11
+ else
12
+ test << " it '#{name}' do\n"
13
+ code.lines.each do |l|
14
+ (/^ *(?<actual>.*?) *# *=> *(?<expected>.*)$/.match(l) do |m|
15
+ test << " expect(#{m[:actual]}).to eq(#{m[:expected]})\n"
16
+ end) || /^\s+(#.*)?$/.match(l) || puts("\033[31mLinie not well formed: \033[0m", l)
17
+ end
18
+ test << " end\n"
19
+ end
20
+ end
21
+ test << "\nend\n"
22
+ File.open('spec/examples_spec.rb','w'){ |f| f.puts test }
23
+ end
@@ -0,0 +1,22 @@
1
+
2
+ begin
3
+
4
+ require 'redcarpet'
5
+
6
+ task 'README.html' => 'README.md' do
7
+ puts "Regenerating README.html"
8
+ markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
9
+ html = markdown.render(File.open('README.md'){ |f| f.read })
10
+ File.open('README.html','w'){ |f| f.puts html }
11
+ end
12
+
13
+ namespace :readme do
14
+ desc "Open the README in browser"
15
+ task :open => ['README.html', :browser] do
16
+ sh "#{ENV["DEVELOPMENT_WEBBROWSER"]} README.html"
17
+ end
18
+ end
19
+
20
+ rescue LoadError
21
+ puts "Could not load redcarpet. The README.md rake tasks are not available."
22
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,10 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ namespace :spec do
6
+ desc "Open coverage report in browser"
7
+ task :open_coverage => :browser do
8
+ sh "#{ENV["DEVELOPMENT_WEBBROWSER"]} coverage/index.html"
9
+ end
10
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'wptemplates/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "wptemplates"
8
+ spec.version = Wptemplates::VERSION
9
+ spec.authors = ["Bernhard Häussner"]
10
+ spec.email = ["bxt@die-optimisten.net"]
11
+ spec.description = %q{Collect template informations from MediaWiki markup}
12
+ spec.summary = %q{Collect template informations from MediaWiki markup}
13
+ spec.homepage = "https://github.com/bxt/wptemplates"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '>= 1.9' # regex named groups
22
+ spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "rdoc"
26
+ spec.add_development_dependency "simplecov"
27
+ #spec.add_development_dependency "wirble"
28
+
29
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wptemplates
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Bernhard Häussner
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rdoc
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Collect template informations from MediaWiki markup
95
+ email:
96
+ - bxt@die-optimisten.net
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - .rspec
103
+ - .travis.yml
104
+ - Gemfile
105
+ - LICENSE.txt
106
+ - README.md
107
+ - README.rdoc
108
+ - Rakefile
109
+ - lib/wptemplates.rb
110
+ - lib/wptemplates/ast.rb
111
+ - lib/wptemplates/parser.rb
112
+ - lib/wptemplates/preprocessor.rb
113
+ - lib/wptemplates/regexes.rb
114
+ - lib/wptemplates/utils.rb
115
+ - lib/wptemplates/version.rb
116
+ - spec/regexes_spec.rb
117
+ - spec/spec_helper.rb
118
+ - spec/utils_spec.rb
119
+ - spec/wptemplates_links_spec.rb
120
+ - spec/wptemplates_mixed_spec.rb
121
+ - spec/wptemplates_templates_spec.rb
122
+ - spec/wptemplates_text_spec.rb
123
+ - tasks/browser.rake
124
+ - tasks/bundler_gem.rake
125
+ - tasks/console.rake
126
+ - tasks/irbrc.rb
127
+ - tasks/rdoc.rake
128
+ - tasks/readme_examples.rake
129
+ - tasks/readme_html.rake
130
+ - tasks/rspec.rake
131
+ - wptemplates.gemspec
132
+ homepage: https://github.com/bxt/wptemplates
133
+ licenses:
134
+ - MIT
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '1.9'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ segments:
152
+ - 0
153
+ hash: -2296704117666700926
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 1.8.24
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: Collect template informations from MediaWiki markup
160
+ test_files:
161
+ - spec/regexes_spec.rb
162
+ - spec/spec_helper.rb
163
+ - spec/utils_spec.rb
164
+ - spec/wptemplates_links_spec.rb
165
+ - spec/wptemplates_mixed_spec.rb
166
+ - spec/wptemplates_templates_spec.rb
167
+ - spec/wptemplates_text_spec.rb