xan_markup 0.1.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/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "rspec", ">= 2.3.0"
10
+ gem "bundler", ">= 1.0.0"
11
+ gem "jeweler", ">= 1.6.3"
12
+ gem "rcov", ">= 0"
13
+ gem "rdoc"
14
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,30 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ git (1.2.5)
6
+ jeweler (1.6.3)
7
+ bundler (~> 1.0)
8
+ git (>= 1.2.5)
9
+ rake
10
+ rake (0.9.2)
11
+ rcov (0.9.9)
12
+ rdoc (3.8)
13
+ rspec (2.6.0)
14
+ rspec-core (~> 2.6.0)
15
+ rspec-expectations (~> 2.6.0)
16
+ rspec-mocks (~> 2.6.0)
17
+ rspec-core (2.6.4)
18
+ rspec-expectations (2.6.0)
19
+ diff-lcs (~> 1.1.2)
20
+ rspec-mocks (2.6.0)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ bundler (>= 1.0.0)
27
+ jeweler (>= 1.6.3)
28
+ rcov
29
+ rdoc
30
+ rspec (>= 2.3.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Grzegorz Derebecki
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # XanMarkup
2
+
3
+
4
+ Very simple tag parser
5
+
6
+ ## Install & Example
7
+
8
+ Add to your Gemfile
9
+
10
+ gem "xan_markup"
11
+
12
+ Create helper (call it like you want)
13
+
14
+ module MarkupHelper
15
+ include XanMarkup::Helper
16
+
17
+ def markup_favorite_movie
18
+ "Matrix"
19
+ end
20
+ end
21
+
22
+ In views use:
23
+
24
+ <%= markupize("My favorite movie is {{ favorite_movie }}") %>
25
+
26
+ ## Atributes
27
+
28
+ You can pass attributes to tags
29
+
30
+ {{ favorite_movie genre="sf-fi" }}
31
+
32
+ def markup_favorite_movie(hash_of_args)
33
+ ....
34
+ end
35
+
36
+ Copyright (c) 2009-20011 Grzegorz Derebecki, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "xan_markup"
18
+ gem.homepage = "http://github.com/madmax/xan_markup"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{simple tag parser}
21
+ gem.description = %Q{Simple tag parser}
22
+ gem.email = "grzegorz.derebecki@fdb.pl"
23
+ gem.authors = ["Grzegorz Derebecki"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rspec/core'
29
+ require 'rspec/core/rake_task'
30
+ RSpec::Core::RakeTask.new(:spec) do |spec|
31
+ spec.pattern = FileList['spec/**/*_spec.rb']
32
+ end
33
+
34
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
35
+ spec.pattern = 'spec/**/*_spec.rb'
36
+ spec.rcov = true
37
+ end
38
+
39
+ task :default => :spec
40
+
41
+ require 'rdoc/task'
42
+ RDoc::Task.new do |rdoc|
43
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "xan_markup #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,19 @@
1
+ module XanMarkup
2
+ MarkupSyntax = /\{\{ ?(.*?) ?\}\}/
3
+ QuotedString = /"[^"]+"|'[^']+'/
4
+ QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/
5
+ TagAttributes = /(\w+)\s*\=\s*(#{QuotedFragment})/
6
+ CleanAttributeValue = /^("|')|("|')$/
7
+ module Helper
8
+ def markupize(content)
9
+ content.to_s.dup.gsub(MarkupSyntax) do |markup|
10
+ args = {}
11
+ method = "markup_#{$1.split.first}"
12
+ $1.scan(TagAttributes) do |key, value|
13
+ args[key.to_sym] = value.gsub(CleanAttributeValue, "")
14
+ end
15
+ (args.empty? ? send(method) : send(method, args)).to_s if respond_to?(method)
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/xan_markup.rb ADDED
@@ -0,0 +1 @@
1
+ require "xan_markup/helper"
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require "rspec"
5
+ require "xan_markup"
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,58 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ class XanMarkup::HelperTest
4
+ include XanMarkup::Helper
5
+ end
6
+
7
+ describe XanMarkup::Helper do
8
+ let(:helper) { XanMarkup::HelperTest.new }
9
+
10
+ it "It should call property method when found tag" do
11
+ helper.should_receive(:markup_test)
12
+ helper.markupize("this is markup {{test}} tag")
13
+ end
14
+
15
+ it "It should property parse one parameter" do
16
+ helper.should_receive(:markup_test).with(:name => "xan")
17
+ helper.markupize('this is markup {{test name="xan"}} tag')
18
+ end
19
+
20
+ it "It should property parse two parameters" do
21
+ helper.should_receive(:markup_test).with(:name => "xan", :next => "b")
22
+ helper.markupize('this is markup {{test name="xan" next="b"}} tag')
23
+ end
24
+
25
+ it "It should allow use single quotes too" do
26
+ helper.should_receive(:markup_test).with(:name => "xan")
27
+ helper.markupize("this is markup {{test name='xan'}} tag")
28
+ end
29
+
30
+ it "It should allow skip quotes too" do
31
+ helper.should_receive(:markup_test).with(:name => "xan")
32
+ helper.markupize("this is markup {{test name=xan}} tag")
33
+ end
34
+
35
+ it "It should parse two tags property" do
36
+ helper.should_receive(:markup_test).twice
37
+ helper.markupize("this is markup {{test}} {{test}} tag")
38
+ end
39
+
40
+ it "It should allow white space at beggining and end tag" do
41
+ helper.should_receive(:markup_test)
42
+ helper.markupize("this is markup {{ test }} tag")
43
+ end
44
+
45
+ it "should not raise exception if tag is not defined" do
46
+ expect { helper.markupize("this is markup {{ test }} tag") }.should_not raise_error(NoMethodError)
47
+ end
48
+
49
+ it "should replace tag with content returned by markup helper" do
50
+ helper.stub(:markup_best_language).and_return("Ruby")
51
+ helper.markupize("Best language is: {{ best_language }}").should include("Ruby")
52
+ end
53
+
54
+
55
+
56
+
57
+
58
+ end
@@ -0,0 +1,64 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{xan_markup}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Grzegorz Derebecki"]
12
+ s.date = %q{2011-07-05}
13
+ s.description = %q{Simple tag parser}
14
+ s.email = %q{grzegorz.derebecki@fdb.pl}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.md",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "lib/xan_markup.rb",
29
+ "lib/xan_markup/helper.rb",
30
+ "spec/spec_helper.rb",
31
+ "spec/xan_markup/helper_spec.rb",
32
+ "xan_markup.gemspec"
33
+ ]
34
+ s.homepage = %q{http://github.com/madmax/xan_markup}
35
+ s.licenses = ["MIT"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.6.2}
38
+ s.summary = %q{simple tag parser}
39
+
40
+ if s.respond_to? :specification_version then
41
+ s.specification_version = 3
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ s.add_development_dependency(%q<rspec>, [">= 2.3.0"])
45
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
46
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.3"])
47
+ s.add_development_dependency(%q<rcov>, [">= 0"])
48
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
49
+ else
50
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
51
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
52
+ s.add_dependency(%q<jeweler>, [">= 1.6.3"])
53
+ s.add_dependency(%q<rcov>, [">= 0"])
54
+ s.add_dependency(%q<rdoc>, [">= 0"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<rspec>, [">= 2.3.0"])
58
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
59
+ s.add_dependency(%q<jeweler>, [">= 1.6.3"])
60
+ s.add_dependency(%q<rcov>, [">= 0"])
61
+ s.add_dependency(%q<rdoc>, [">= 0"])
62
+ end
63
+ end
64
+
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xan_markup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Grzegorz Derebecki
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-07-05 00:00:00.000000000 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ requirement: &2151883480 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *2151883480
26
+ - !ruby/object:Gem::Dependency
27
+ name: bundler
28
+ requirement: &2151881420 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2151881420
37
+ - !ruby/object:Gem::Dependency
38
+ name: jeweler
39
+ requirement: &2151880400 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 1.6.3
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *2151880400
48
+ - !ruby/object:Gem::Dependency
49
+ name: rcov
50
+ requirement: &2151879480 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *2151879480
59
+ - !ruby/object:Gem::Dependency
60
+ name: rdoc
61
+ requirement: &2151878600 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2151878600
70
+ description: Simple tag parser
71
+ email: grzegorz.derebecki@fdb.pl
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - LICENSE.txt
76
+ - README.md
77
+ files:
78
+ - .document
79
+ - .rspec
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - LICENSE.txt
83
+ - README.md
84
+ - Rakefile
85
+ - VERSION
86
+ - lib/xan_markup.rb
87
+ - lib/xan_markup/helper.rb
88
+ - spec/spec_helper.rb
89
+ - spec/xan_markup/helper_spec.rb
90
+ - xan_markup.gemspec
91
+ has_rdoc: true
92
+ homepage: http://github.com/madmax/xan_markup
93
+ licenses:
94
+ - MIT
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ segments:
106
+ - 0
107
+ hash: 4023389553539246113
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 1.6.2
117
+ signing_key:
118
+ specification_version: 3
119
+ summary: simple tag parser
120
+ test_files: []