wptemplates 0.0.3
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/.gitignore +20 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +92 -0
- data/README.rdoc +8 -0
- data/Rakefile +4 -0
- data/lib/wptemplates.rb +20 -0
- data/lib/wptemplates/ast.rb +91 -0
- data/lib/wptemplates/parser.rb +112 -0
- data/lib/wptemplates/preprocessor.rb +17 -0
- data/lib/wptemplates/regexes.rb +95 -0
- data/lib/wptemplates/utils.rb +38 -0
- data/lib/wptemplates/version.rb +3 -0
- data/spec/regexes_spec.rb +458 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/utils_spec.rb +90 -0
- data/spec/wptemplates_links_spec.rb +249 -0
- data/spec/wptemplates_mixed_spec.rb +82 -0
- data/spec/wptemplates_templates_spec.rb +161 -0
- data/spec/wptemplates_text_spec.rb +75 -0
- data/tasks/browser.rake +4 -0
- data/tasks/bundler_gem.rake +1 -0
- data/tasks/console.rake +7 -0
- data/tasks/irbrc.rb +22 -0
- data/tasks/rdoc.rake +16 -0
- data/tasks/readme_examples.rake +23 -0
- data/tasks/readme_html.rake +22 -0
- data/tasks/rspec.rake +10 -0
- data/wptemplates.gemspec +29 -0
- metadata +167 -0
@@ -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
|
data/tasks/browser.rake
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/tasks/console.rake
ADDED
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
data/wptemplates.gemspec
ADDED
@@ -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
|