nagoro 2009.05 → 2013.03
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +6 -0
- data/CHANGELOG +161 -93
- data/MANIFEST +2 -3
- data/README.markdown +56 -4
- data/Rakefile +2 -3
- data/example/morpher.nag +2 -2
- data/lib/nagoro/pipe/base.rb +7 -15
- data/lib/nagoro/pipe/element.rb +23 -0
- data/lib/nagoro/pipe/include.rb +9 -0
- data/lib/nagoro/pipe/morph.rb +1 -1
- data/lib/nagoro/scanner.rb +28 -9
- data/lib/nagoro/template.rb +5 -4
- data/lib/nagoro/version.rb +1 -1
- data/nagoro.gemspec +10 -12
- data/spec/example/hello.rb +1 -1
- data/spec/helper.rb +2 -2
- data/spec/nagoro/listener/base.rb +1 -1
- data/spec/nagoro/pipe/compile.rb +19 -1
- data/spec/nagoro/pipe/element.rb +6 -1
- data/spec/nagoro/pipe/include.rb +1 -1
- data/spec/nagoro/pipe/instruction.rb +1 -1
- data/spec/nagoro/pipe/morph.rb +1 -1
- data/spec/nagoro/pipe/tidy.rb +1 -1
- data/spec/nagoro/template.rb +12 -1
- data/tasks/authors.rake +30 -0
- data/tasks/bacon.rake +42 -23
- data/tasks/gem.rake +2 -5
- data/tasks/release.rake +21 -32
- metadata +23 -34
- data/tasks/gem_installer.rake +0 -76
- data/tasks/grancher.rake +0 -12
- data/tasks/install_dependencies.rake +0 -6
data/spec/nagoro/pipe/include.rb
CHANGED
data/spec/nagoro/pipe/morph.rb
CHANGED
data/spec/nagoro/pipe/tidy.rb
CHANGED
data/spec/nagoro/template.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require File.expand_path('../../helper', __FILE__)
|
2
2
|
|
3
3
|
describe "Nagoro" do
|
4
4
|
should '::compile from filename' do
|
@@ -102,4 +102,15 @@ describe "Nagoro::Template" do
|
|
102
102
|
|
103
103
|
Nagoro.render(comment).should == comment
|
104
104
|
end
|
105
|
+
|
106
|
+
it "ignores javascript in parameter" do
|
107
|
+
@stuff = 'nothing'
|
108
|
+
tag = %q|<a href="stuff" onmouseover='this.src="#{@stuff}"'>stuff</a>|
|
109
|
+
|
110
|
+
Nagoro.render(tag, :binding => binding).should == %|<a href="stuff" onmouseover='this.src="#{@stuff}"'>stuff</a>|
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'The param tag should be left open if it is not closed' do
|
114
|
+
Nagoro.render('<param><tag>foo</tag></param>').should == '<param><tag>foo</tag></param>'
|
115
|
+
end
|
105
116
|
end
|
data/tasks/authors.rake
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Once git has a fix for the glibc in handling .mailmap and another fix for
|
2
|
+
# allowing empty mail address to be mapped in .mailmap we won't have to handle
|
3
|
+
# them manually.
|
4
|
+
|
5
|
+
desc 'Update AUTHORS'
|
6
|
+
task :authors do
|
7
|
+
authors = Hash.new(0)
|
8
|
+
|
9
|
+
`git shortlog -nse`.scan(/(\d+)\s(.+)\s<(.*)>$/) do |count, name, email|
|
10
|
+
case name
|
11
|
+
when "ahoward"
|
12
|
+
name, email = "Ara T. Howard", "ara.t.howard@gmail.com"
|
13
|
+
when "Martin Hilbig blueonyx@dev-area.net"
|
14
|
+
name, email = "Martin Hilbig", "blueonyx@dev-area.net"
|
15
|
+
when "Michael Fellinger m.fellinger@gmail.com"
|
16
|
+
name, email = "Michael Fellinger", "m.fellinger@gmail.com"
|
17
|
+
end
|
18
|
+
|
19
|
+
authors[[name, email]] += count.to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
File.open('AUTHORS', 'w+') do |io|
|
23
|
+
io.puts "Following persons have contributed to #{GEMSPEC.name}."
|
24
|
+
io.puts '(Sorted by number of submitted patches, then alphabetically)'
|
25
|
+
io.puts ''
|
26
|
+
authors.sort_by{|(n,e),c| [-c, n.downcase] }.each do |(name, email), count|
|
27
|
+
io.puts("%6d %s <%s>" % [count, name, email])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/tasks/bacon.rake
CHANGED
@@ -1,49 +1,68 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
1
3
|
desc 'Run all bacon specs with pretty output'
|
2
|
-
task :bacon
|
4
|
+
task :bacon do
|
3
5
|
require 'open3'
|
4
6
|
require 'scanf'
|
7
|
+
require 'matrix'
|
5
8
|
|
6
9
|
specs = PROJECT_SPECS
|
7
10
|
|
8
11
|
some_failed = false
|
9
|
-
|
12
|
+
specs_size = specs.size
|
10
13
|
len = specs.map{|s| s.size }.sort.last
|
11
|
-
|
14
|
+
total_tests = total_assertions = total_failures = total_errors = 0
|
15
|
+
totals = Vector[0, 0, 0, 0]
|
12
16
|
|
13
17
|
red, yellow, green = "\e[31m%s\e[0m", "\e[33m%s\e[0m", "\e[32m%s\e[0m"
|
14
18
|
left_format = "%4d/%d: %-#{len + 11}s"
|
15
19
|
spec_format = "%d specifications (%d requirements), %d failures, %d errors"
|
16
20
|
|
17
21
|
specs.each_with_index do |spec, idx|
|
18
|
-
print(left_format % [idx + 1,
|
22
|
+
print(left_format % [idx + 1, specs_size, spec])
|
19
23
|
|
20
|
-
Open3.popen3(RUBY, spec) do |sin, sout, serr|
|
21
|
-
out = sout.read
|
22
|
-
err = serr.read
|
24
|
+
Open3.popen3(FileUtils::RUBY, '-w', spec) do |sin, sout, serr|
|
25
|
+
out = sout.read.strip
|
26
|
+
err = serr.read.strip
|
23
27
|
|
24
|
-
|
28
|
+
# this is conventional, see spec/innate/state/fiber.rb for usage
|
29
|
+
if out =~ /^Bacon::Error: (needed .*)/
|
30
|
+
puts(yellow % ("%6s %s" % ['', $1]))
|
31
|
+
else
|
32
|
+
total = nil
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
next unless all.any?
|
29
|
-
ran = true
|
30
|
-
tt += tests; ta += assertions; tf += failures; te += errors
|
34
|
+
out.each_line do |line|
|
35
|
+
scanned = line.scanf(spec_format)
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
else
|
37
|
-
puts((green % "%6d passed") % tests)
|
37
|
+
next unless scanned.size == 4
|
38
|
+
|
39
|
+
total = Vector[*scanned]
|
40
|
+
break
|
38
41
|
end
|
39
42
|
|
40
|
-
|
41
|
-
|
43
|
+
if total
|
44
|
+
totals += total
|
45
|
+
tests, assertions, failures, errors = total_array = total.to_a
|
42
46
|
|
43
|
-
|
47
|
+
if tests > 0 && failures + errors == 0
|
48
|
+
puts((green % "%6d passed") % tests)
|
49
|
+
else
|
50
|
+
some_failed = true
|
51
|
+
puts(red % " failed")
|
52
|
+
puts out unless out.empty?
|
53
|
+
puts err unless err.empty?
|
54
|
+
end
|
55
|
+
else
|
56
|
+
some_failed = true
|
57
|
+
puts(red % " failed")
|
58
|
+
puts out unless out.empty?
|
59
|
+
puts err unless err.empty?
|
60
|
+
end
|
61
|
+
end
|
44
62
|
end
|
45
63
|
end
|
46
64
|
|
47
|
-
|
65
|
+
total_color = some_failed ? red : green
|
66
|
+
puts(total_color % (spec_format % totals.to_a))
|
48
67
|
exit 1 if some_failed
|
49
68
|
end
|
data/tasks/gem.rake
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rake/gempackagetask'
|
2
|
-
|
3
1
|
task :gemspec => [:manifest, :changelog] do
|
4
2
|
gemspec_file = "#{GEMSPEC.name}.gemspec"
|
5
3
|
File.open(gemspec_file, 'w+'){|gs| gs.puts(GEMSPEC.to_ruby) }
|
@@ -16,7 +14,6 @@ task :uninstall => [:clean] do
|
|
16
14
|
sh %{gem uninstall -x #{GEMSPEC.name}}
|
17
15
|
end
|
18
16
|
|
19
|
-
|
20
|
-
|
21
|
-
p.need_zip = true
|
17
|
+
Gem::PackageTask.new(GEMSPEC) do |pkg|
|
18
|
+
pkg.need_tar = true
|
22
19
|
end
|
data/tasks/release.rake
CHANGED
@@ -1,52 +1,41 @@
|
|
1
1
|
namespace :release do
|
2
|
-
task :
|
2
|
+
task :prepare => [:reversion, :authors, :gemspec]
|
3
|
+
task :all => ['release:github', 'release:gemcutter']
|
3
4
|
|
4
|
-
desc '
|
5
|
-
task :github =>
|
5
|
+
desc 'Release on github'
|
6
|
+
task :github => :prepare do
|
6
7
|
name, version = GEMSPEC.name, GEMSPEC.version
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
sh('git', 'add',
|
10
|
+
'MANIFEST', 'CHANGELOG', 'AUTHORS',
|
11
|
+
"#{name}.gemspec",
|
12
|
+
"lib/#{name}/version.rb")
|
10
13
|
|
11
|
-
|
14
|
+
puts <<-INSTRUCTIONS
|
15
|
+
================================================================================
|
12
16
|
|
13
|
-
|
17
|
+
I added the relevant files, you can commit them, tag the commit, and push:
|
14
18
|
|
15
19
|
git commit -m 'Version #{version}'
|
16
20
|
git tag -a -m '#{version}' '#{version}'
|
17
21
|
git push
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
================================================================================
|
24
|
+
INSTRUCTIONS
|
21
25
|
end
|
22
26
|
|
23
|
-
|
24
|
-
|
25
|
-
task :rubyforge => [:reversion, :gemspec, :package] do
|
27
|
+
desc 'Release on gemcutter'
|
28
|
+
task :gemcutter => ['release:prepare', :package] do
|
26
29
|
name, version = GEMSPEC.name, GEMSPEC.version
|
27
30
|
|
28
|
-
puts
|
29
|
-
|
30
|
-
|
31
|
-
rubyforge login
|
32
|
-
rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
|
33
|
-
|
34
|
-
After you have done these steps, see:
|
35
|
-
|
36
|
-
rake release:rubyforge_archives
|
31
|
+
puts <<-INSTRUCTIONS
|
32
|
+
================================================================================
|
37
33
|
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
desc 'Display instructions to add archives after release:rubyforge'
|
42
|
-
task :rubyforge_archives do
|
43
|
-
name, version = GEMSPEC.name, GEMSPEC.version
|
44
|
-
puts "Adding archives for distro packagers is:", ""
|
34
|
+
To publish to gemcutter do following:
|
45
35
|
|
46
|
-
|
47
|
-
puts "rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
|
48
|
-
end
|
36
|
+
gem push pkg/#{name}-#{version}.gem
|
49
37
|
|
50
|
-
|
38
|
+
================================================================================
|
39
|
+
INSTRUCTIONS
|
51
40
|
end
|
52
41
|
end
|
metadata
CHANGED
@@ -1,27 +1,23 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagoro
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '2013.03'
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
+
authors:
|
7
8
|
- Michael 'manveru' Fellinger
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
date: 2009-05-07 00:00:00 +09:00
|
13
|
-
default_executable:
|
12
|
+
date: 2013-03-22 00:00:00.000000000 Z
|
14
13
|
dependencies: []
|
15
|
-
|
16
14
|
description: An extendible and fast templating engine in pure ruby.
|
17
15
|
email: m.fellinger@gmail.com
|
18
16
|
executables: []
|
19
|
-
|
20
17
|
extensions: []
|
21
|
-
|
22
18
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
|
19
|
+
files:
|
20
|
+
- AUTHORS
|
25
21
|
- CHANGELOG
|
26
22
|
- MANIFEST
|
27
23
|
- README.markdown
|
@@ -63,43 +59,36 @@ files:
|
|
63
59
|
- spec/nagoro/template.rb
|
64
60
|
- spec/nagoro/template/full.nag
|
65
61
|
- spec/nagoro/template/hello.nag
|
62
|
+
- tasks/authors.rake
|
66
63
|
- tasks/bacon.rake
|
67
64
|
- tasks/changelog.rake
|
68
65
|
- tasks/gem.rake
|
69
|
-
- tasks/gem_installer.rake
|
70
|
-
- tasks/grancher.rake
|
71
|
-
- tasks/install_dependencies.rake
|
72
66
|
- tasks/manifest.rake
|
73
67
|
- tasks/rcov.rake
|
74
68
|
- tasks/release.rake
|
75
69
|
- tasks/reversion.rake
|
76
|
-
has_rdoc: true
|
77
70
|
homepage: http://github.com/manveru/nagoro
|
78
71
|
licenses: []
|
79
|
-
|
80
72
|
post_install_message:
|
81
73
|
rdoc_options: []
|
82
|
-
|
83
|
-
require_paths:
|
74
|
+
require_paths:
|
84
75
|
- lib
|
85
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
97
88
|
requirements: []
|
98
|
-
|
99
89
|
rubyforge_project:
|
100
|
-
rubygems_version: 1.
|
90
|
+
rubygems_version: 1.8.25
|
101
91
|
signing_key:
|
102
92
|
specification_version: 3
|
103
93
|
summary: An extendible and fast templating engine in pure ruby.
|
104
94
|
test_files: []
|
105
|
-
|
data/tasks/gem_installer.rake
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
task :gem_installer do
|
2
|
-
class GemInstaller
|
3
|
-
def initialize(options = {}, &block)
|
4
|
-
@gems = []
|
5
|
-
@options = options
|
6
|
-
|
7
|
-
run(&block)
|
8
|
-
end
|
9
|
-
|
10
|
-
def run(&block)
|
11
|
-
instance_eval(&block) if block_given?
|
12
|
-
end
|
13
|
-
|
14
|
-
def gem(name, version = nil, options = {})
|
15
|
-
if version.respond_to?(:merge!)
|
16
|
-
options = version
|
17
|
-
else
|
18
|
-
options[:version] = version
|
19
|
-
end
|
20
|
-
|
21
|
-
@gems << [name, options]
|
22
|
-
end
|
23
|
-
|
24
|
-
def setup_gemspec(gemspec)
|
25
|
-
gemspec.dependencies.each do |dependency|
|
26
|
-
dependency.version_requirements.as_list.each do |version|
|
27
|
-
gem(dependency.name, version)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
setup
|
32
|
-
end
|
33
|
-
|
34
|
-
def setup
|
35
|
-
require 'rubygems'
|
36
|
-
require 'rubygems/dependency_installer'
|
37
|
-
|
38
|
-
@gems.each do |name, options|
|
39
|
-
setup_gem(name, options)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def setup_gem(name, options, try_install = true)
|
44
|
-
print "activating #{name} ... "
|
45
|
-
Gem.activate(name, *[options[:version]].compact)
|
46
|
-
require(options[:lib] || name)
|
47
|
-
puts "success."
|
48
|
-
rescue LoadError => error
|
49
|
-
puts error
|
50
|
-
install_gem(name, options) if try_install
|
51
|
-
setup_gem(name, options, try_install = false)
|
52
|
-
end
|
53
|
-
|
54
|
-
def install_gem(name, options)
|
55
|
-
installer = Gem::DependencyInstaller.new(options)
|
56
|
-
|
57
|
-
temp_argv(options[:extconf]) do
|
58
|
-
print "Installing #{name} ... "
|
59
|
-
installer.install(name, options[:version])
|
60
|
-
puts "done."
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def temp_argv(extconf)
|
65
|
-
if extconf ||= @options[:extconf]
|
66
|
-
old_argv = ARGV.clone
|
67
|
-
ARGV.replace(extconf.split(' '))
|
68
|
-
end
|
69
|
-
|
70
|
-
yield
|
71
|
-
|
72
|
-
ensure
|
73
|
-
ARGV.replace(old_argv) if extconf
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|