snippr 0.13.1 → 0.13.2
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/README.md +14 -2
- data/lib/snippr/normalizer.rb +5 -0
- data/lib/snippr/path.rb +8 -15
- data/lib/snippr/railtie.rb +15 -0
- data/lib/snippr/snip.rb +9 -10
- data/lib/snippr.rb +19 -3
- data/snippr.gemspec +4 -7
- data/spec/snippr/normalizer_spec.rb +20 -0
- data/spec/snippr/path_spec.rb +17 -10
- data/spec/spec_helper.rb +4 -6
- metadata +18 -29
- data/rails/init.rb +0 -1
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Snippr
|
2
2
|
## File based content management
|
3
|
+

|
3
4
|
|
4
5
|
A snippr file is a piece of HTML or raw text to be included in a website. They are plain text
|
5
6
|
files stored on the file system. Snippr files end with ".snip" and are read from the Snippr path.
|
@@ -139,5 +140,16 @@ your views. You can then use the +snippr+ helper method to load snippr files.
|
|
139
140
|
.topup.info
|
140
141
|
= snippr :topup, :success
|
141
142
|
|
142
|
-
##
|
143
|
-
|
143
|
+
## Configuration via railtie
|
144
|
+
Starting in version 0.13.2 you can configure snippr without the use of initializers when using Rails:
|
145
|
+
|
146
|
+
Edit `application.rb` (or the environment specific files in config/environments) and add:
|
147
|
+
|
148
|
+
class Application < Rails::Application
|
149
|
+
config.snippr.i18n = true
|
150
|
+
# Add a Normalizer:
|
151
|
+
config.snippr.normalizers = Snippr::Normalizer::DeRester.new
|
152
|
+
config.snippr.path = "my/path/to/snippets"
|
153
|
+
# or even for defered configuration with a lambda:
|
154
|
+
# config.snippr.path = lambda { SomeClassThatsAvailableLater.path }
|
155
|
+
end
|
data/lib/snippr/normalizer.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# # -*- encoding : utf-8 -*-
|
1
2
|
# = Snippr::Normalizer
|
2
3
|
#
|
3
4
|
# Provides methods to normalize snippr path elements.
|
@@ -9,6 +10,10 @@ module Snippr
|
|
9
10
|
@normalizers ||= []
|
10
11
|
end
|
11
12
|
|
13
|
+
def self.add(normalizer_or_normalizers)
|
14
|
+
@normalizers = Array(@normalizers) + Array(normalizer_or_normalizers)
|
15
|
+
end
|
16
|
+
|
12
17
|
# Sends the given path element to all the configured normalizers and returns the result.
|
13
18
|
def self.normalize(path_element)
|
14
19
|
@normalizers.inject(path_element) {|e, normalizer| normalizer.normalize e}
|
data/lib/snippr/path.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
|
+
# # -*- encoding : utf-8 -*-
|
1
2
|
# = Snippr::Path
|
2
3
|
#
|
3
4
|
# Provides methods for dealing with the path to snippr files.
|
4
5
|
module Snippr
|
5
6
|
module Path
|
6
7
|
|
7
|
-
#
|
8
|
-
JVM_PROPERTY = 'cms.snippet.path'
|
9
|
-
|
10
|
-
# Returns the path to the snippr files (from JVM properties if available).
|
8
|
+
# Returns the path to the snippr files
|
11
9
|
def self.path
|
12
|
-
@@path
|
10
|
+
if @@path.respond_to?(:call)
|
11
|
+
@@path_evaled ||= @@path.call
|
12
|
+
else
|
13
|
+
@@path.to_s
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
15
17
|
# Sets the path to the snippr files.
|
16
18
|
def self.path=(path)
|
17
|
-
@@path = path
|
19
|
+
@@path = path
|
18
20
|
end
|
19
21
|
|
20
22
|
# Builds a snippr name from an array of path parts.
|
@@ -37,14 +39,5 @@ module Snippr
|
|
37
39
|
end.sort.map(&:to_sym)
|
38
40
|
end
|
39
41
|
|
40
|
-
private
|
41
|
-
|
42
|
-
if RUBY_PLATFORM =~ /java/
|
43
|
-
require 'java'
|
44
|
-
module JavaLang
|
45
|
-
include_package "java.lang"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
42
|
end
|
50
43
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Snippr
|
3
|
+
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
|
6
|
+
config.snippr = ActiveSupport::OrderedOptions.new
|
7
|
+
|
8
|
+
initializer :setup_snippr, :group => :all do |app|
|
9
|
+
Snippr.i18n = app.config.snippr.i18n
|
10
|
+
Snippr.path = app.config.snippr.path
|
11
|
+
Snippr::Normalizer.add app.config.snippr.normalizers if app.config.snippr.normalizers
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
data/lib/snippr/snip.rb
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
# = Snippr::Snip
|
3
3
|
#
|
4
4
|
# Represents a single snip and provides methods to read data.
|
5
|
+
|
5
6
|
module Snippr
|
6
7
|
class Snip
|
7
8
|
|
8
|
-
extend ActiveSupport::Memoizable
|
9
|
-
|
10
9
|
FILE_EXTENSION = 'snip'
|
11
10
|
|
12
11
|
def initialize(*names)
|
@@ -22,20 +21,20 @@ module Snippr
|
|
22
21
|
|
23
22
|
# Returns the processed and decorated content.
|
24
23
|
def content
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
@content ||= begin
|
25
|
+
if missing?
|
26
|
+
"<!-- missing snippr: #{name} -->"
|
27
|
+
else
|
28
|
+
content = Processor.process unprocessed_content, opts
|
29
|
+
"<!-- starting snippr: #{name} -->\n#{content}\n<!-- closing snippr: #{name} -->"
|
30
|
+
end
|
30
31
|
end
|
31
32
|
end
|
32
|
-
memoize :content
|
33
33
|
alias :to_s :content
|
34
34
|
|
35
35
|
def raw_content
|
36
|
-
missing? ? '' : File.read(@path).strip
|
36
|
+
@raw_content ||= missing? ? '' : File.read(@path).strip
|
37
37
|
end
|
38
|
-
memoize :raw_content
|
39
38
|
|
40
39
|
# Returns whether the snip is missing or not.
|
41
40
|
def missing?
|
data/lib/snippr.rb
CHANGED
@@ -1,8 +1,24 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'active_support/core_ext'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
require 'snippr/snippr'
|
5
|
+
require 'snippr/snip'
|
6
|
+
require 'snippr/i18n'
|
7
|
+
require 'snippr/links'
|
8
|
+
require 'snippr/meta_data'
|
9
|
+
require 'snippr/normalizer'
|
10
|
+
require 'snippr/path'
|
11
|
+
require 'snippr/processor'
|
12
|
+
require 'snippr/railtie' if defined?(Rails)
|
13
|
+
require 'snippr/view_helper'
|
14
|
+
|
15
|
+
require 'snippr/normalizer/camelizer'
|
16
|
+
require 'snippr/normalizer/de_rester'
|
17
|
+
|
18
|
+
require 'snippr/processor/dynamics'
|
19
|
+
require 'snippr/processor/functions'
|
20
|
+
require 'snippr/processor/links'
|
21
|
+
require 'snippr/processor/wikilinks'
|
6
22
|
|
7
23
|
Snippr::Normalizer.normalizers << Snippr::Normalizer::Camelizer.new
|
8
24
|
# don't use DeRester this for all apps, but configure it as needed
|
data/snippr.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = "snippr"
|
4
|
-
s.version = "0.13.
|
4
|
+
s.version = "0.13.2"
|
5
5
|
s.date = Time.now
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.authors = ["Daniel Harrington", "Thomas Jachmann"]
|
@@ -16,12 +16,9 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.add_runtime_dependency "activesupport"
|
17
17
|
|
18
18
|
s.add_development_dependency "ci_reporter", "~> 1.6.5"
|
19
|
-
s.add_development_dependency "rspec", "~> 2.
|
20
|
-
s.add_development_dependency "mocha", "0.
|
21
|
-
s.add_development_dependency "rake", "~> 0.9.
|
22
|
-
# pin down ZenTest so that autotest works without upgrading rubygems
|
23
|
-
# see http://stackoverflow.com/questions/6802610/autotest-problem [mw, 2011-08-10]
|
24
|
-
s.add_development_dependency "ZenTest", "4.5.0"
|
19
|
+
s.add_development_dependency "rspec", "~> 2.8.0"
|
20
|
+
s.add_development_dependency "mocha", "0.11.4"
|
21
|
+
s.add_development_dependency "rake", "~> 0.9.2"
|
25
22
|
|
26
23
|
s.files = `git ls-files`.split("\n")
|
27
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require "spec_helper"
|
2
3
|
|
3
4
|
describe Snippr::Normalizer do
|
@@ -37,4 +38,23 @@ describe Snippr::Normalizer do
|
|
37
38
|
|
38
39
|
end
|
39
40
|
|
41
|
+
describe ".add" do
|
42
|
+
|
43
|
+
before do
|
44
|
+
subject.normalizers.clear
|
45
|
+
subject.normalizers << Snippr::Normalizer::Camelizer.new
|
46
|
+
end
|
47
|
+
|
48
|
+
it "adds the normalizer if an class" do
|
49
|
+
subject.add(Snippr::Normalizer::DeRester.new)
|
50
|
+
subject.normalizers.should have(2).normalizers
|
51
|
+
end
|
52
|
+
|
53
|
+
it "adds the normalizers if an array" do
|
54
|
+
subject.add([Snippr::Normalizer::DeRester.new, Snippr::Normalizer::DeRester.new])
|
55
|
+
subject.normalizers.should have(3).normalizers
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
40
60
|
end
|
data/spec/snippr/path_spec.rb
CHANGED
@@ -1,23 +1,30 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require "spec_helper"
|
2
3
|
|
3
4
|
describe Snippr::Path do
|
4
5
|
|
5
6
|
describe "path" do
|
6
7
|
|
7
|
-
|
8
|
+
before do
|
8
9
|
subject.path = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "stores the path if set as string" do
|
9
13
|
subject.path.should == ''
|
10
14
|
subject.path = 'path'
|
11
15
|
subject.path.should == 'path'
|
12
16
|
end
|
13
17
|
|
14
|
-
|
18
|
+
it "stores and defers the path evaluation if passed a lambda" do
|
19
|
+
subject.path = lambda { "WOW LAMBDA ACTION!" }
|
20
|
+
subject.path.should == "WOW LAMBDA ACTION!"
|
21
|
+
end
|
15
22
|
|
16
23
|
end
|
17
24
|
|
18
25
|
describe ".normalize_name" do
|
19
26
|
|
20
|
-
it "
|
27
|
+
it "calls Snippr::Normalizer.normalize with all names and return normalized result" do
|
21
28
|
seq = sequence "normalizers"
|
22
29
|
Snippr::Normalizer.expects(:normalize).with("a").in_sequence(seq).returns("AA")
|
23
30
|
Snippr::Normalizer.expects(:normalize).with(:b).in_sequence(seq).returns("BB")
|
@@ -32,11 +39,11 @@ describe Snippr::Path do
|
|
32
39
|
subject.path = 'path'
|
33
40
|
end
|
34
41
|
|
35
|
-
it "
|
42
|
+
it "joins path and name (with extension)" do
|
36
43
|
subject.path_from_name('name', 'snip').should == 'path/name.snip'
|
37
44
|
end
|
38
45
|
|
39
|
-
it "
|
46
|
+
it "joins path and name (without extension)" do
|
40
47
|
subject.path_from_name('file').should == 'path/file'
|
41
48
|
end
|
42
49
|
|
@@ -50,11 +57,11 @@ describe Snippr::Path do
|
|
50
57
|
Snippr::I18n.enabled = false
|
51
58
|
end
|
52
59
|
|
53
|
-
it "
|
60
|
+
it "returns a list of all snippr names" do
|
54
61
|
subject.list(:topup).should == [:some_error, :success]
|
55
62
|
end
|
56
63
|
|
57
|
-
it "
|
64
|
+
it "returns an empty array for non existant dirs" do
|
58
65
|
subject.list(:doesnotexist).should == []
|
59
66
|
end
|
60
67
|
|
@@ -66,17 +73,17 @@ describe Snippr::Path do
|
|
66
73
|
Snippr::I18n.enabled = true
|
67
74
|
end
|
68
75
|
|
69
|
-
it "
|
76
|
+
it "returns a list of all snippr names of the current locale (de)" do
|
70
77
|
I18n.locale = :de
|
71
78
|
subject.list(:i18n).should == [:list, :shop]
|
72
79
|
end
|
73
80
|
|
74
|
-
it "
|
81
|
+
it "returns a list of all snippr names of the current locale (en)" do
|
75
82
|
I18n.locale = :en
|
76
83
|
subject.list(:i18n).should == [:shop]
|
77
84
|
end
|
78
85
|
|
79
|
-
it "
|
86
|
+
it "returns an empty array for non existant dirs" do
|
80
87
|
subject.list(:doesnotexist).should == []
|
81
88
|
end
|
82
89
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'rubygems'
|
2
3
|
require 'bundler'
|
4
|
+
require 'snippr'
|
5
|
+
|
3
6
|
Bundler.require(:default, :development)
|
4
7
|
|
5
8
|
RSpec.configure do |config|
|
@@ -8,11 +11,6 @@ RSpec.configure do |config|
|
|
8
11
|
Snippr::I18n.enabled = nil
|
9
12
|
Snippr::Links.adjust_urls_except = nil
|
10
13
|
snippr_path = File.expand_path '../fixtures', __FILE__
|
11
|
-
|
12
|
-
Snippr::Path.path = snippr_path
|
13
|
-
Snippr::Path::JavaLang::System.set_property Snippr::Path::JVM_PROPERTY, snippr_path
|
14
|
-
else
|
15
|
-
Snippr::Path.path = snippr_path
|
16
|
-
end
|
14
|
+
Snippr::Path.path = snippr_path
|
17
15
|
end
|
18
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snippr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: i18n
|
17
|
-
requirement: &
|
17
|
+
requirement: &2183725920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2183725920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activesupport
|
28
|
-
requirement: &
|
28
|
+
requirement: &2183725480 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2183725480
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: ci_reporter
|
39
|
-
requirement: &
|
39
|
+
requirement: &2183774080 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,51 +44,40 @@ dependencies:
|
|
44
44
|
version: 1.6.5
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2183774080
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
|
-
requirement: &
|
50
|
+
requirement: &2183773580 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 2.
|
55
|
+
version: 2.8.0
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2183773580
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: mocha
|
61
|
-
requirement: &
|
61
|
+
requirement: &2183773120 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - =
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
66
|
+
version: 0.11.4
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2183773120
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake
|
72
|
-
requirement: &
|
72
|
+
requirement: &2183772660 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.9.
|
77
|
+
version: 0.9.2
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: ZenTest
|
83
|
-
requirement: &2181993280 !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
|
-
requirements:
|
86
|
-
- - =
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 4.5.0
|
89
|
-
type: :development
|
90
|
-
prerelease: false
|
91
|
-
version_requirements: *2181993280
|
80
|
+
version_requirements: *2183772660
|
92
81
|
description: This gem provides ways to access file based cms resources from a rails
|
93
82
|
app.
|
94
83
|
email:
|
@@ -118,10 +107,10 @@ files:
|
|
118
107
|
- lib/snippr/processor/functions.rb
|
119
108
|
- lib/snippr/processor/links.rb
|
120
109
|
- lib/snippr/processor/wikilinks.rb
|
110
|
+
- lib/snippr/railtie.rb
|
121
111
|
- lib/snippr/snip.rb
|
122
112
|
- lib/snippr/snippr.rb
|
123
113
|
- lib/snippr/view_helper.rb
|
124
|
-
- rails/init.rb
|
125
114
|
- snippr.gemspec
|
126
115
|
- spec/fixtures/a/path/aSnippet.snip
|
127
116
|
- spec/fixtures/a/path/aSnippetWithParam.snip
|
data/rails/init.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "snippr"
|