feather 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1de807935a97f70d69017324bb6afde148c0670a
4
- data.tar.gz: addc943b185f849e2962b0cd0160e5262b5cdfb0
3
+ metadata.gz: 85c43bfc423dc5a8dbd77857b92a2c9d74bb73c2
4
+ data.tar.gz: 95d9b80ee144392fe22c7e107926f4d6aad4215c
5
5
  SHA512:
6
- metadata.gz: 99cc59b1e93a2cbac2190dd4df4eac34be97d9737c4ea13cb5cb5b933a388bfcfca9e7a41c256e6acb5863efea7e346b52c34458cf84281b39c85f099701123e
7
- data.tar.gz: 5e8f80df8cf82d39b4ceeb89f8408793c218a711034414601099c1c62754c2611659bbba1f3eab28728ccc07762a69ab197fba39392c2dc4161cc9bf94ac3f69
6
+ metadata.gz: b38495655005155dd0ef4d3d684bad79ab9ca71f3d530f7d845f67f1b69feecb188246fdacd70474e5aa7daf519f9b4dd80f9c72e8b928baae348105a8c19468
7
+ data.tar.gz: 2d6b49b9e1a689b771899874df3d889bf63c8a97d7268d48ba7c00de31121c735c1f58b66185281d8fb2bae7d4de89f6a564c1e1285b7812639795c5ffbb848f
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ before_install: gem install bundler
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.5
7
+ - 2.2.0
8
+ - 2.3.0
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
- source :rubygems
1
+ source 'https://rubygems.org/'
2
+
3
+ gem 'addressable'
2
4
 
3
5
  group :development do
4
6
  gem 'jeweler'
7
+ gem 'minitest'
5
8
  end
data/README.md CHANGED
@@ -47,6 +47,6 @@ as a reference.
47
47
 
48
48
  ## Copyright
49
49
 
50
- Copyright (c) 2011-2013 Scott Tadman, The Working Group Inc.
50
+ Copyright (c) 2011-2015 Scott Tadman, The Working Group Inc.
51
51
  See LICENSE.txt for further details.
52
52
 
@@ -1,3 +1,6 @@
1
+ 0.4.2
2
+ - Updates to run clean with -w warnings turned on.
3
+ - Removing old YAML encoding stub and using encode_with(coder)
1
4
  0.4.1
2
5
  - Minor bugfixes with HTML-escaped content being specified with array values.
3
6
  0.4.0
data/Rakefile CHANGED
@@ -23,4 +23,4 @@ Rake::TestTask.new(:test) do |test|
23
23
  test.verbose = true
24
24
  end
25
25
 
26
- task :default => :test
26
+ task default: :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.4.2
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: feather 0.4.1 ruby lib
5
+ # stub: feather 0.4.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "feather"
9
- s.version = "0.4.1"
9
+ s.version = "0.4.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Scott Tadman"]
14
- s.date = "2015-01-26"
14
+ s.date = "2016-03-28"
15
15
  s.description = "A simple light-weight text templating system"
16
16
  s.email = "github@tadman.ca"
17
17
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".travis.yml",
23
24
  "Gemfile",
24
25
  "LICENSE.txt",
25
26
  "README.md",
@@ -38,19 +39,25 @@ Gem::Specification.new do |s|
38
39
  ]
39
40
  s.homepage = "http://github.com/twg/feather"
40
41
  s.licenses = ["MIT"]
41
- s.rubygems_version = "2.2.2"
42
+ s.rubygems_version = "2.5.1"
42
43
  s.summary = "Light-weight text tempating system"
43
44
 
44
45
  if s.respond_to? :specification_version then
45
46
  s.specification_version = 4
46
47
 
47
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
48
50
  s.add_development_dependency(%q<jeweler>, [">= 0"])
51
+ s.add_development_dependency(%q<minitest>, [">= 0"])
49
52
  else
53
+ s.add_dependency(%q<addressable>, [">= 0"])
50
54
  s.add_dependency(%q<jeweler>, [">= 0"])
55
+ s.add_dependency(%q<minitest>, [">= 0"])
51
56
  end
52
57
  else
58
+ s.add_dependency(%q<addressable>, [">= 0"])
53
59
  s.add_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_dependency(%q<minitest>, [">= 0"])
54
61
  end
55
62
  end
56
63
 
@@ -5,7 +5,7 @@ module Feather::Support
5
5
  # == Module/Mixin Methods =================================================
6
6
 
7
7
  def uri_escape(object)
8
- URI.escape(object.to_s, /[^a-z0-9\-\.]/i)
8
+ Addressable::URI.normalize_component(object.to_s, /[^a-z0-9\-\.]/i)
9
9
  end
10
10
 
11
11
  def html_escape(object)
@@ -4,8 +4,6 @@ class Feather::Template
4
4
  TOKEN_REGEXP = /((?:[^\{]|\{[^\{]|\{\{\{)+)|\{\{\s*([\&\%\$\.\:\#\^\*\/\=\!]|\?\!?)?([^\}]*)\}\}/.freeze
5
5
  TOKEN_TRIGGER = /\{\{/.freeze
6
6
 
7
- TO_YAML_PROPERTIES = %w[ @content @escape_method ].freeze
8
-
9
7
  # == Utility Classes ======================================================
10
8
 
11
9
  class TemplateHash < Hash; end
@@ -33,6 +31,8 @@ class Feather::Template
33
31
  # * :html - Automatically escape fields for HTML
34
32
  # * :text - Default mode, render all fields literally
35
33
  def initialize(content, options = nil)
34
+ @escape_method = nil
35
+
36
36
  if (options)
37
37
  if (source = options[:escape])
38
38
  case (source.to_sym)
@@ -62,7 +62,7 @@ class Feather::Template
62
62
  @_proc ||= begin
63
63
  source = ''
64
64
 
65
- self.compile(:source => source, :escape_method => @escape_method)
65
+ self.compile(source: source, escape_method: @escape_method)
66
66
 
67
67
  eval(source)
68
68
  end
@@ -88,7 +88,7 @@ class Feather::Template
88
88
  when Feather::Template, Proc, Array
89
89
  v
90
90
  when TOKEN_TRIGGER
91
- self.class.new(v, :escape => @escape_method)
91
+ self.class.new(v, escape: @escape_method)
92
92
  when nil
93
93
  nil
94
94
  else
@@ -107,7 +107,7 @@ class Feather::Template
107
107
  _parent = _parents.shift
108
108
 
109
109
  unless (_parent.is_a?(Feather::Template))
110
- _parent = self.class.new(_parent, :escape => @escape_method)
110
+ _parent = self.class.new(_parent, escape: @escape_method)
111
111
  end
112
112
 
113
113
  _parent.render(
@@ -208,7 +208,7 @@ class Feather::Template
208
208
  stack << [ :section, tag, VariableTracker.new ]
209
209
 
210
210
  source and source << "if(v);s<<v;v=v.is_a?(Array)?v[#{index}]:(v.is_a?(Hash)&&v[#{tag.inspect}]);"
211
- source and source << "h.iterate(v){|v|;v=h.cast_as_vars(v, s);"
211
+ source and source << "h.iterate(v){|_v|;v=h.cast_as_vars(_v, s);"
212
212
 
213
213
  sections and sections[tag] = true
214
214
  when '^'
@@ -294,9 +294,10 @@ class Feather::Template
294
294
  true
295
295
  end
296
296
 
297
- # For compatibility with YAML.dump
298
- def to_yaml_properties
299
- TO_YAML_PROPERTIES
297
+ # For compatibility with YAML
298
+ def encode_with(coder)
299
+ coder['content'] = @content
300
+ coder['escape_method'] = @escape_method
300
301
  end
301
302
 
302
303
  # For compatibility with the Psych YAML library
@@ -314,7 +315,7 @@ class Feather::Template
314
315
 
315
316
  # For compatibility with Marshal.dump
316
317
  def marshal_dump
317
- [ @content, { :escape => @escape_method } ]
318
+ [ @content, { escape: @escape_method } ]
318
319
  end
319
320
 
320
321
  # For compatibility with Marshal.load
@@ -1,4 +1,16 @@
1
1
  require 'rubygems'
2
+ require 'bundler'
3
+
4
+ begin
5
+ Bundler.setup(:default, :development)
6
+
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
+
13
+ gem 'minitest'
2
14
  require 'minitest/autorun'
3
15
 
4
16
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -6,7 +18,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
6
18
 
7
19
  require 'feather'
8
20
 
9
- class Minitest::Test
21
+ class MiniTest::Test
10
22
  def assert_exception(exception_class, message = nil)
11
23
  begin
12
24
  yield
@@ -1,6 +1,6 @@
1
1
  require_relative './helper'
2
2
 
3
- class TestFeather < Minitest::Test
3
+ class TestFeather < MiniTest::Test
4
4
  def test_module_loaded
5
5
  assert Feather
6
6
 
@@ -2,9 +2,19 @@ require_relative './helper'
2
2
 
3
3
  require 'yaml'
4
4
 
5
- class TestFeatherSupport < Minitest::Test
6
- def test_variable_stack
7
- test = { :test => [ { :a => 'a', :b => 'b' }, { :c => 'c' } ] }
5
+ class TestFeatherSupport < MiniTest::Test
6
+ def test_variable_stack_with_symbol_keys
7
+ test = {
8
+ test: [
9
+ {
10
+ a: 'a',
11
+ b: 'b'
12
+ },
13
+ {
14
+ c: 'c'
15
+ }
16
+ ]
17
+ }
8
18
 
9
19
  variables = Feather::Support.variable_stack(test)
10
20
 
@@ -14,8 +24,20 @@ class TestFeatherSupport < Minitest::Test
14
24
  assert_equal 'b', variables[:test][0][:b]
15
25
  assert_equal 'c', variables[:test][1][:c]
16
26
  assert_equal nil, variables[:test][1][:d]
27
+ end
17
28
 
18
- test = { 'test' => [ { 'a' => :a, 'b' => :b }, { 'c' => :c } ] }
29
+ def test_variable_stack_with_string_keys
30
+ test = {
31
+ 'test' => [
32
+ {
33
+ 'a' => :a,
34
+ 'b' => :b
35
+ },
36
+ {
37
+ 'c' => :c
38
+ }
39
+ ]
40
+ }
19
41
 
20
42
  variables = Feather::Support.variable_stack(test)
21
43
 
@@ -27,13 +49,39 @@ class TestFeatherSupport < Minitest::Test
27
49
  assert_equal [ 'test' ], Feather::Support.variable_stack('test')
28
50
  assert_equal [ 'test' ], Feather::Support.variable_stack([ 'test' ], false)
29
51
  assert_equal [ 'test' ], Feather::Support.variable_stack([ 'test' ])
30
-
31
- variables = Feather::Support.variable_stack(:head => [ { :tag => 'meta' }, { :tag => 'link' } ])
52
+ end
53
+
54
+ def test_variable_stack_with_multiple_values
55
+ variables = Feather::Support.variable_stack(
56
+ head: [
57
+ {
58
+ tag: 'meta'
59
+ },
60
+ {
61
+ tag: 'link'
62
+ }
63
+ ]
64
+ )
32
65
 
33
66
  assert_equal 'meta', variables[:head][0][:tag]
34
67
  assert_equal 'link', variables[:head][1][:tag]
35
-
36
- test = { 'top' => { 'layer' => 'top', 't' => 'top', 'middle' => { 'layer' => 'middle', 'm' => 'middle', 'bottom' => { 'layer' => 'bottom', 'b' => 'bottom' } } } }
68
+ end
69
+
70
+ def test_variable_stack_with_deeper_nesting
71
+ test = {
72
+ 'top' => {
73
+ 'layer' => 'top',
74
+ 't' => 'top',
75
+ 'middle' => {
76
+ 'layer' => 'middle',
77
+ 'm' => 'middle',
78
+ 'bottom' => {
79
+ 'layer' => 'bottom',
80
+ 'b' => 'bottom'
81
+ }
82
+ }
83
+ }
84
+ }
37
85
 
38
86
  variables = Feather::Support.variable_stack(test)
39
87
 
@@ -2,7 +2,7 @@ require_relative './helper'
2
2
 
3
3
  require 'yaml'
4
4
 
5
- class TestFeatherTemplate < Minitest::Test
5
+ class TestFeatherTemplate < MiniTest::Test
6
6
  def test_empty_template
7
7
  template = Feather::Template.new('')
8
8
 
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feather
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Tadman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: jeweler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description: A simple light-weight text templating system
28
56
  email: github@tadman.ca
29
57
  executables: []
@@ -33,6 +61,7 @@ extra_rdoc_files:
33
61
  - README.md
34
62
  files:
35
63
  - ".document"
64
+ - ".travis.yml"
36
65
  - Gemfile
37
66
  - LICENSE.txt
38
67
  - README.md
@@ -68,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
97
  version: '0'
69
98
  requirements: []
70
99
  rubyforge_project:
71
- rubygems_version: 2.2.2
100
+ rubygems_version: 2.5.1
72
101
  signing_key:
73
102
  specification_version: 4
74
103
  summary: Light-weight text tempating system