mustermann 1.0.2.rc1 → 1.0.2.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +799 -230
- data/{mustermann/bench → bench}/capturing.rb +0 -0
- data/{mustermann/bench → bench}/regexp.rb +0 -0
- data/{mustermann/bench → bench}/simple_vs_sinatra.rb +0 -0
- data/{mustermann/bench → bench}/template_vs_addressable.rb +0 -0
- data/{mustermann/lib → lib}/mustermann.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/boundaries.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/compiler.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/expander.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/node.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/param_scanner.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/parser.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/pattern.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/template_generator.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/transformer.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/translator.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/ast/validation.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/caster.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/composite.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/concat.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/equality_map.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/error.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/expander.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/extension.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/identity.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/mapper.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/pattern.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/pattern_cache.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/regexp.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/regexp_based.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/regular.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/simple_match.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/sinatra.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/sinatra/parser.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/sinatra/safe_renderer.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/sinatra/try_convert.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/to_pattern.rb +0 -0
- data/{mustermann/lib → lib}/mustermann/version.rb +1 -1
- data/{mustermann/mustermann.gemspec → mustermann.gemspec} +0 -0
- data/{mustermann/spec → spec}/ast_spec.rb +0 -0
- data/{mustermann/spec → spec}/composite_spec.rb +0 -0
- data/{mustermann/spec → spec}/concat_spec.rb +0 -0
- data/{mustermann/spec → spec}/equality_map_spec.rb +0 -0
- data/{mustermann/spec → spec}/expander_spec.rb +0 -0
- data/{mustermann/spec → spec}/extension_spec.rb +0 -0
- data/{mustermann/spec → spec}/identity_spec.rb +0 -0
- data/{mustermann/spec → spec}/mapper_spec.rb +0 -0
- data/{mustermann/spec → spec}/mustermann_spec.rb +0 -0
- data/{mustermann/spec → spec}/pattern_spec.rb +0 -0
- data/{mustermann/spec → spec}/regexp_based_spec.rb +0 -0
- data/{mustermann/spec → spec}/regular_spec.rb +0 -0
- data/{mustermann/spec → spec}/simple_match_spec.rb +0 -0
- data/{mustermann/spec → spec}/sinatra_spec.rb +0 -0
- data/{mustermann/spec → spec}/to_pattern_spec.rb +0 -0
- metadata +71 -126
- data/.gitignore +0 -18
- data/.rspec +0 -5
- data/.travis.yml +0 -25
- data/.yardopts +0 -3
- data/Gemfile +0 -7
- data/Rakefile +0 -27
- data/mustermann-contrib/LICENSE +0 -23
- data/mustermann-contrib/README.md +0 -1155
- data/mustermann-contrib/examples/highlighting.rb +0 -35
- data/mustermann-contrib/highlighting.png +0 -0
- data/mustermann-contrib/irb.png +0 -0
- data/mustermann-contrib/lib/mustermann/cake.rb +0 -19
- data/mustermann-contrib/lib/mustermann/express.rb +0 -38
- data/mustermann-contrib/lib/mustermann/file_utils.rb +0 -218
- data/mustermann-contrib/lib/mustermann/file_utils/glob_pattern.rb +0 -40
- data/mustermann-contrib/lib/mustermann/fileutils.rb +0 -1
- data/mustermann-contrib/lib/mustermann/flask.rb +0 -199
- data/mustermann-contrib/lib/mustermann/pyramid.rb +0 -29
- data/mustermann-contrib/lib/mustermann/rails.rb +0 -47
- data/mustermann-contrib/lib/mustermann/shell.rb +0 -57
- data/mustermann-contrib/lib/mustermann/simple.rb +0 -51
- data/mustermann-contrib/lib/mustermann/string_scanner.rb +0 -314
- data/mustermann-contrib/lib/mustermann/strscan.rb +0 -1
- data/mustermann-contrib/lib/mustermann/template.rb +0 -63
- data/mustermann-contrib/lib/mustermann/uri_template.rb +0 -1
- data/mustermann-contrib/lib/mustermann/versions.rb +0 -47
- data/mustermann-contrib/lib/mustermann/visualizer.rb +0 -39
- data/mustermann-contrib/lib/mustermann/visualizer/highlight.rb +0 -138
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter.rb +0 -38
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter/ad_hoc.rb +0 -95
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter/ast.rb +0 -103
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter/composite.rb +0 -46
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter/dummy.rb +0 -19
- data/mustermann-contrib/lib/mustermann/visualizer/highlighter/regular.rb +0 -105
- data/mustermann-contrib/lib/mustermann/visualizer/pattern_extension.rb +0 -69
- data/mustermann-contrib/lib/mustermann/visualizer/renderer/ansi.rb +0 -24
- data/mustermann-contrib/lib/mustermann/visualizer/renderer/generic.rb +0 -47
- data/mustermann-contrib/lib/mustermann/visualizer/renderer/hansi_template.rb +0 -35
- data/mustermann-contrib/lib/mustermann/visualizer/renderer/html.rb +0 -51
- data/mustermann-contrib/lib/mustermann/visualizer/renderer/sexp.rb +0 -38
- data/mustermann-contrib/lib/mustermann/visualizer/tree.rb +0 -64
- data/mustermann-contrib/lib/mustermann/visualizer/tree_renderer.rb +0 -79
- data/mustermann-contrib/mustermann-contrib.gemspec +0 -19
- data/mustermann-contrib/spec/cake_spec.rb +0 -91
- data/mustermann-contrib/spec/express_spec.rb +0 -210
- data/mustermann-contrib/spec/file_utils_spec.rb +0 -120
- data/mustermann-contrib/spec/flask_spec.rb +0 -362
- data/mustermann-contrib/spec/flask_subclass_spec.rb +0 -369
- data/mustermann-contrib/spec/pattern_extension_spec.rb +0 -50
- data/mustermann-contrib/spec/pyramid_spec.rb +0 -102
- data/mustermann-contrib/spec/rails_spec.rb +0 -648
- data/mustermann-contrib/spec/shell_spec.rb +0 -148
- data/mustermann-contrib/spec/simple_spec.rb +0 -269
- data/mustermann-contrib/spec/string_scanner_spec.rb +0 -272
- data/mustermann-contrib/spec/template_spec.rb +0 -842
- data/mustermann-contrib/spec/visualizer_spec.rb +0 -199
- data/mustermann-contrib/theme.png +0 -0
- data/mustermann-contrib/tree.png +0 -0
- data/mustermann/LICENSE +0 -23
- data/mustermann/README.md +0 -853
- data/support/lib/support.rb +0 -7
- data/support/lib/support/coverage.rb +0 -23
- data/support/lib/support/env.rb +0 -19
- data/support/lib/support/expand_matcher.rb +0 -28
- data/support/lib/support/generate_template_matcher.rb +0 -27
- data/support/lib/support/match_matcher.rb +0 -39
- data/support/lib/support/pattern.rb +0 -42
- data/support/lib/support/projects.rb +0 -20
- data/support/lib/support/scan_matcher.rb +0 -63
- data/support/support.gemspec +0 -27
data/support/lib/support.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'simplecov'
|
2
|
-
require 'coveralls'
|
3
|
-
require 'support/projects'
|
4
|
-
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
6
|
-
[
|
7
|
-
SimpleCov::Formatter::HTMLFormatter,
|
8
|
-
Coveralls::SimpleCov::Formatter
|
9
|
-
]
|
10
|
-
)
|
11
|
-
|
12
|
-
SimpleCov.start do
|
13
|
-
project_name 'mustermann'
|
14
|
-
minimum_coverage 100
|
15
|
-
coverage_dir '.coverage'
|
16
|
-
|
17
|
-
add_filter "/spec/"
|
18
|
-
add_filter "/support/"
|
19
|
-
|
20
|
-
Support::Projects.each do |project|
|
21
|
-
add_group project.sub('mustermann-', ''), "/#{project}/lib"
|
22
|
-
end
|
23
|
-
end
|
data/support/lib/support/env.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
if RUBY_VERSION < '2.1.0'
|
2
|
-
$stderr.puts "needs Ruby 2.1.0, you're running #{RUBY_VERSION}"
|
3
|
-
exit 1
|
4
|
-
end
|
5
|
-
|
6
|
-
RUBY_ENGINE ||= 'ruby'
|
7
|
-
ENV['RACK_ENV'] = 'test'
|
8
|
-
|
9
|
-
require 'tool/warning_filter'
|
10
|
-
$-w = true
|
11
|
-
|
12
|
-
require 'rspec'
|
13
|
-
require 'rspec/its'
|
14
|
-
|
15
|
-
RSpec.configure do |config|
|
16
|
-
config.expect_with :rspec do |c|
|
17
|
-
c.syntax = [:should, :expect]
|
18
|
-
end
|
19
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
RSpec::Matchers.define :expand do |behavior = nil, **values|
|
2
|
-
match do |pattern|
|
3
|
-
@string ||= nil
|
4
|
-
begin
|
5
|
-
expanded = pattern.expand(behavior, values)
|
6
|
-
rescue Exception
|
7
|
-
false
|
8
|
-
else
|
9
|
-
@string ? @string == expanded : !!expanded
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
chain :to do |string|
|
14
|
-
@string = string
|
15
|
-
end
|
16
|
-
|
17
|
-
failure_message do |pattern|
|
18
|
-
message = "expected %p to be expandable with %p" % [pattern, values]
|
19
|
-
message << " (%p behavior)" % behavior if behavior
|
20
|
-
expanded = pattern.expand(behavior, values)
|
21
|
-
message << " and result in %p, but got %p" % [@string, expanded] if @string
|
22
|
-
message
|
23
|
-
end
|
24
|
-
|
25
|
-
failure_message_when_negated do |pattern|
|
26
|
-
"expected %p not to be expandable with %p" % [pattern, values]
|
27
|
-
end
|
28
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
RSpec::Matchers.define :generate_template do |template|
|
2
|
-
match { |pattern| pattern.to_templates.include? template }
|
3
|
-
|
4
|
-
failure_message do |pattern|
|
5
|
-
"expected %p to generate template %p, but only generated %s" % [
|
6
|
-
pattern, template, pattern.to_templates.map(&:inspect).join(', ')
|
7
|
-
]
|
8
|
-
end
|
9
|
-
|
10
|
-
failure_message_when_negated do |pattern|
|
11
|
-
"expected %p not to generate template %p" % [ pattern, template ]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
RSpec::Matchers.define :generate_templates do |*templates|
|
16
|
-
match { |pattern| pattern.to_templates.sort == templates.sort }
|
17
|
-
|
18
|
-
failure_message do |pattern|
|
19
|
-
"expected %p to generate templates %p, but generated %p" % [
|
20
|
-
pattern, templates.sort, pattern.to_templates.sort
|
21
|
-
]
|
22
|
-
end
|
23
|
-
|
24
|
-
failure_message_when_negated do |pattern|
|
25
|
-
"expected %p not to generate templates %p" % [ pattern, templates ]
|
26
|
-
end
|
27
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
RSpec::Matchers.define :match do |expected|
|
2
|
-
match do |actual|
|
3
|
-
@captures ||= false
|
4
|
-
match = actual.match(expected)
|
5
|
-
match &&= @captures.all? { |k, v| match[k] == v } if @captures
|
6
|
-
match
|
7
|
-
end
|
8
|
-
|
9
|
-
chain :capturing do |captures|
|
10
|
-
@captures = captures
|
11
|
-
end
|
12
|
-
|
13
|
-
failure_message do |actual|
|
14
|
-
require 'pp'
|
15
|
-
match = actual.match(expected)
|
16
|
-
if match
|
17
|
-
key, value = @captures.detect { |k, v| match[k] != v }
|
18
|
-
message = "expected %p to capture %p as %p when matching %p, but got %p\n\nRegular Expression:\n%p" % [
|
19
|
-
actual.to_s, key, value, expected, match[key], actual.regexp
|
20
|
-
]
|
21
|
-
|
22
|
-
if actual.respond_to? :to_ast
|
23
|
-
require 'mustermann/visualizer/tree_renderer'
|
24
|
-
tree = Mustermann::Visualizer::TreeRenderer.render(actual)
|
25
|
-
message << "\n\nAST:\n#{tree}"
|
26
|
-
end
|
27
|
-
|
28
|
-
message
|
29
|
-
else
|
30
|
-
"expected %p to match %p" % [ actual, expected ]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
failure_message_when_negated do |actual|
|
35
|
-
"expected %p not to match %p" % [
|
36
|
-
actual.to_s, expected
|
37
|
-
]
|
38
|
-
end
|
39
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'timeout'
|
2
|
-
|
3
|
-
module Support
|
4
|
-
module Pattern
|
5
|
-
extend RSpec::Matchers::DSL
|
6
|
-
|
7
|
-
def pattern(pattern, options = nil, &block)
|
8
|
-
description = "pattern %p" % pattern
|
9
|
-
|
10
|
-
if options
|
11
|
-
description << " with options %p" % [options]
|
12
|
-
instance = subject_for(pattern, options)
|
13
|
-
else
|
14
|
-
instance = subject_for(pattern)
|
15
|
-
end
|
16
|
-
|
17
|
-
context description do
|
18
|
-
subject(:pattern, &instance)
|
19
|
-
its(:to_s) { should be == pattern }
|
20
|
-
its(:inspect) { should be == "#<#{described_class}:#{pattern.inspect}>" }
|
21
|
-
its(:names) { should be_an(Array) }
|
22
|
-
its(:to_templates) { should be == [pattern] } if described_class.name == "Mustermann::Template"
|
23
|
-
|
24
|
-
example 'string should be immune to external change' do
|
25
|
-
subject.to_s.replace "NOT THE PATTERN"
|
26
|
-
subject.to_s.should be == pattern
|
27
|
-
end
|
28
|
-
|
29
|
-
instance_eval(&block)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def subject_for(pattern, *args)
|
34
|
-
instance = Timeout.timeout(1) { described_class.new(pattern, *args) }
|
35
|
-
proc { instance }
|
36
|
-
rescue Timeout::Error => error
|
37
|
-
proc { raise Timeout::Error, "could not compile #{pattern.inspect} in time", error.backtrace }
|
38
|
-
rescue Exception => error
|
39
|
-
proc { raise error }
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Support
|
2
|
-
module Projects
|
3
|
-
include Enumerable
|
4
|
-
extend self
|
5
|
-
|
6
|
-
def base
|
7
|
-
File.expand_path('../../../..', __FILE__)
|
8
|
-
end
|
9
|
-
|
10
|
-
def projects
|
11
|
-
@@projects ||= Dir.chdir(base) do
|
12
|
-
Dir['mustermann*/*.gemspec'].map { |f| File.dirname(f) }.sort
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def each(&block)
|
17
|
-
projects.each(&block)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
module Support
|
2
|
-
module ScanMatcher
|
3
|
-
extend RSpec::Matchers::DSL
|
4
|
-
|
5
|
-
def scan(pattern, **options)
|
6
|
-
give_scan_result(:scan, pattern, **options)
|
7
|
-
end
|
8
|
-
|
9
|
-
def check(pattern, **options)
|
10
|
-
give_scan_result(:check, pattern, **options)
|
11
|
-
end
|
12
|
-
|
13
|
-
def scan_until(pattern, **options)
|
14
|
-
give_scan_result(:scan_until, pattern, **options)
|
15
|
-
end
|
16
|
-
|
17
|
-
def check_until(pattern, **options)
|
18
|
-
give_scan_result(:check_until, pattern, **options)
|
19
|
-
end
|
20
|
-
|
21
|
-
matcher :give_scan_result do |method_name, pattern, **options|
|
22
|
-
def result_expectations
|
23
|
-
@result_expectations ||= []
|
24
|
-
end
|
25
|
-
|
26
|
-
def expect_result(description, expected, &block)
|
27
|
-
result_expectations << Proc.new do |result|
|
28
|
-
if !block.call(result)
|
29
|
-
"expected %p to %s %p matching %s" % [ result.scanner, method_name, pattern, description ]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
match do |scanner|
|
35
|
-
scanned = scanner.public_send(method_name, pattern, **options)
|
36
|
-
scanned and result_expectations.all? { |e| !e.call(scanned) }
|
37
|
-
end
|
38
|
-
|
39
|
-
chain(:matching_substring) do |substring|
|
40
|
-
expected_result("the substring %p" % substring) { |r| r.to_s == substring }
|
41
|
-
end
|
42
|
-
|
43
|
-
chain(:matching_length) do |length|
|
44
|
-
expected_result("%d characters" % length) { |r| r.length == length }
|
45
|
-
end
|
46
|
-
|
47
|
-
chain(:matching_params) do |params|
|
48
|
-
expected_result("with params %p" % [params]) { |r| r.params == params }
|
49
|
-
end
|
50
|
-
|
51
|
-
failure_message do |scanner|
|
52
|
-
if scanned = scanner.public_send(method_name, pattern, **options)
|
53
|
-
message = result_expectations.inject(nil) { |m,e| m || e.call(scanned) }
|
54
|
-
end
|
55
|
-
message || "expected %p to %s %p" % [ scanner, method_name, pattern ]
|
56
|
-
end
|
57
|
-
|
58
|
-
failure_message_when_negated do |scanner|
|
59
|
-
"expected %p not to %s %p" % [ scanner, method_name, pattern ]
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
data/support/support.gemspec
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
$:.unshift File.expand_path("../../mustermann/lib", __FILE__)
|
2
|
-
require "mustermann/version"
|
3
|
-
|
4
|
-
Gem::Specification.new do |s|
|
5
|
-
s.name = "support"
|
6
|
-
s.version = "0.0.1"
|
7
|
-
s.author = "Konstantin Haase"
|
8
|
-
s.email = "konstantin.mailinglists@googlemail.com"
|
9
|
-
s.homepage = "https://github.com/rkh/mustermann"
|
10
|
-
s.summary = %q{support for mustermann development}
|
11
|
-
s.require_path = 'lib'
|
12
|
-
s.files = `git ls-files`.split("\n")
|
13
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
15
|
-
|
16
|
-
s.add_dependency 'tool', '~> 0.2'
|
17
|
-
s.add_dependency 'rspec'
|
18
|
-
s.add_dependency 'rspec-its'
|
19
|
-
s.add_dependency 'addressable'
|
20
|
-
s.add_dependency 'sinatra', '~> 1.4'
|
21
|
-
s.add_dependency 'rack-test'
|
22
|
-
s.add_dependency 'rake'
|
23
|
-
s.add_dependency 'yard'
|
24
|
-
s.add_dependency 'redcarpet'
|
25
|
-
s.add_dependency 'simplecov'
|
26
|
-
s.add_dependency 'coveralls'
|
27
|
-
end
|