vanilla 1.9.17 → 1.11.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/Rakefile +8 -8
- data/lib/vanilla/app.rb +11 -2
- data/lib/vanilla/dynasnips/new.rb +1 -1
- data/lib/vanilla/renderers/haml.rb +15 -0
- data/lib/vanilla/soup/timestamp_backend.rb +22 -0
- data/test/base_renderer_test.rb +1 -1
- data/test/dynasnip_test.rb +1 -1
- data/test/erb_renderer_test.rb +1 -1
- data/test/haml_renderer_test.rb +37 -0
- data/test/markdown_renderer_test.rb +1 -1
- data/test/raw_renderer_test.rb +1 -1
- data/test/ruby_renderer_test.rb +1 -1
- data/test/snip_reference_parser_test.rb +1 -1
- data/test/snip_reference_test.rb +1 -1
- data/test/soup/whatwhat.yml +2 -0
- data/test/test_helper.rb +10 -15
- data/test/tmp/soup/current_snip.yml +4 -4
- data/test/tmp/soup/system.yml +2 -2
- data/test/tmp/soup/temp.yml +4 -0
- data/test/vanilla_app_test.rb +2 -2
- data/test/vanilla_presenting_test.rb +1 -1
- data/test/vanilla_request_test.rb +3 -3
- data/test/vanilla_soup_test.rb +1 -1
- metadata +97 -43
- data/lib/vanilla/dynasnips/notes.rb +0 -42
- data/lib/vanilla/soup_with_timestamps.rb +0 -22
data/Rakefile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
require "rubygems"
|
2
|
+
require "rake/gempackagetask"
|
3
|
+
require "rake/rdoctask"
|
4
|
+
|
3
5
|
load File.join(File.dirname(__FILE__), *%w[lib tasks vanilla.rake])
|
4
6
|
|
5
7
|
task :default => :test
|
@@ -7,14 +9,11 @@ task :default => :test
|
|
7
9
|
require "rake/testtask"
|
8
10
|
Rake::TestTask.new do |t|
|
9
11
|
t.libs << "test"
|
12
|
+
t.ruby_opts << "-rubygems"
|
10
13
|
t.test_files = FileList["test/**/*_test.rb"]
|
11
14
|
t.verbose = true
|
12
15
|
end
|
13
16
|
|
14
|
-
require "rubygems"
|
15
|
-
require "rake/gempackagetask"
|
16
|
-
require "rake/rdoctask"
|
17
|
-
|
18
17
|
if Object.const_defined?(:Gem)
|
19
18
|
# This builds the actual gem. For details of what all these options
|
20
19
|
# mean, and other ones you can add, check the documentation here:
|
@@ -25,7 +24,7 @@ if Object.const_defined?(:Gem)
|
|
25
24
|
|
26
25
|
# Change these as appropriate
|
27
26
|
s.name = "vanilla"
|
28
|
-
s.version = "1.
|
27
|
+
s.version = "1.11.0"
|
29
28
|
s.summary = "A bliki-type web content thing."
|
30
29
|
s.author = "James Adam"
|
31
30
|
s.email = "james@lazyatom.com.com"
|
@@ -42,7 +41,7 @@ if Object.const_defined?(:Gem)
|
|
42
41
|
|
43
42
|
# All the other gems we need.
|
44
43
|
s.add_dependency("rack", ">= 0.9.1")
|
45
|
-
s.add_dependency("soup", ">= 0.9.
|
44
|
+
s.add_dependency("soup", ">= 0.9.10")
|
46
45
|
s.add_dependency("ratom", ">= 0.3.5")
|
47
46
|
s.add_dependency("RedCloth", ">= 4.1.1")
|
48
47
|
s.add_dependency("BlueCloth", ">= 1.0.0")
|
@@ -51,6 +50,7 @@ if Object.const_defined?(:Gem)
|
|
51
50
|
|
52
51
|
s.add_development_dependency("shoulda") # add any other gems for testing/development
|
53
52
|
s.add_development_dependency("mocha")
|
53
|
+
s.add_development_dependency("haml")
|
54
54
|
|
55
55
|
# If you want to publish automatically to rubyforge, you'll may need
|
56
56
|
# to tweak this, and the publishing task below too.
|
data/lib/vanilla/app.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'vanilla/request'
|
2
2
|
require 'vanilla/authentication'
|
3
3
|
require 'vanilla/routes'
|
4
|
-
require 'vanilla/
|
4
|
+
require 'vanilla/soup/timestamp_backend'
|
5
5
|
|
6
6
|
# Require the base set of renderers
|
7
7
|
require 'vanilla/renderers/base'
|
@@ -18,7 +18,7 @@ module Vanilla
|
|
18
18
|
|
19
19
|
def initialize(config_file=nil)
|
20
20
|
prepare_configuration(config_file)
|
21
|
-
@soup =
|
21
|
+
@soup = prepare_soup(config)
|
22
22
|
@authenticator = Vanilla::Authentication::Base.new(self)
|
23
23
|
end
|
24
24
|
|
@@ -99,5 +99,14 @@ module Vanilla
|
|
99
99
|
File.open(self[:filename], 'w') { |f| f.puts self.to_yaml }
|
100
100
|
end
|
101
101
|
end
|
102
|
+
|
103
|
+
def prepare_soup(config)
|
104
|
+
if config[:soups]
|
105
|
+
backends = [config[:soups]].flatten.map { |path| Vanilla::Soup::TimestampBackend.new(::Soup::Backends::YAMLBackend.new(path)) }
|
106
|
+
::Soup.new(::Soup::Backends::MultiSoup.new(*backends))
|
107
|
+
else
|
108
|
+
::Soup.new(Vanilla::Soup::TimestampBackend.new(::Soup::Backends::YAMLBackend.new(config[:soup])))
|
109
|
+
end
|
110
|
+
end
|
102
111
|
end
|
103
112
|
end
|
@@ -7,6 +7,6 @@ class NewSnip < Dynasnip
|
|
7
7
|
app.request.authenticate!
|
8
8
|
|
9
9
|
base_params = {:render_as => '', :content => '', :author => current_user}.update(app.request.params)
|
10
|
-
editor = EditSnip.new(app).edit(Snip.new(base_params))
|
10
|
+
editor = EditSnip.new(app).edit(Soup::Snip.new(base_params))
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'vanilla/renderers/base'
|
2
|
+
|
3
|
+
require 'haml'
|
4
|
+
|
5
|
+
module Vanilla::Renderers
|
6
|
+
class Haml < Base
|
7
|
+
def prepare(snip, part=:content, args=[], enclosing_snip=snip)
|
8
|
+
@snip = snip
|
9
|
+
end
|
10
|
+
|
11
|
+
def process_text(content)
|
12
|
+
::Haml::Engine.new(content).render(binding)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'soup'
|
2
|
+
|
3
|
+
module Vanilla
|
4
|
+
module Soup
|
5
|
+
class TimestampBackend
|
6
|
+
def initialize(backend)
|
7
|
+
@backend = backend
|
8
|
+
end
|
9
|
+
|
10
|
+
def save_snip(attributes)
|
11
|
+
attributes[:created_at] ||= Time.now
|
12
|
+
attributes[:created_at] = Time.parse(attributes[:created_at]) if attributes[:created_at].is_a?(String)
|
13
|
+
attributes[:updated_at] = Time.now
|
14
|
+
@backend.save_snip(attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def method_missing(*args)
|
18
|
+
@backend.__send__(*args)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/base_renderer_test.rb
CHANGED
data/test/dynasnip_test.rb
CHANGED
data/test/erb_renderer_test.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'haml'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class HamlRendererTest < Vanilla::TestCase
|
5
|
+
context "when rendering" do
|
6
|
+
should "render Haml into HTML" do
|
7
|
+
haml_snip(:name => "test", :content => "#hello\n stuff")
|
8
|
+
assert_response_body %{<div id='hello'>\n stuff\n</div>}, "/test"
|
9
|
+
end
|
10
|
+
|
11
|
+
should "insert evaluated Haml content into the snip" do
|
12
|
+
haml_snip(:name => "test", :content => "= 1 + 2")
|
13
|
+
assert_response_body "3", "/test"
|
14
|
+
end
|
15
|
+
|
16
|
+
should "evaluate Erb content in the snip" do
|
17
|
+
haml_snip(:name => "test", :content => "- if false\n monkey\n- else\n donkey")
|
18
|
+
assert_response_body "donkey", "/test"
|
19
|
+
end
|
20
|
+
|
21
|
+
should "expose the snip as an instance variable" do
|
22
|
+
haml_snip(:name => "test", :content => "= @snip.name")
|
23
|
+
assert_response_body "test", "/test"
|
24
|
+
end
|
25
|
+
|
26
|
+
should "expose the app as an instance variable" do
|
27
|
+
haml_snip(:name => "test", :content => "= @app.class.name")
|
28
|
+
assert_response_body "Vanilla::App", "/test"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def haml_snip(params)
|
35
|
+
create_snip(params.merge(:render_as => "Haml"))
|
36
|
+
end
|
37
|
+
end
|
data/test/raw_renderer_test.rb
CHANGED
data/test/ruby_renderer_test.rb
CHANGED
data/test/snip_reference_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
2
|
-
require "rubygems"
|
3
|
-
require "vanilla"
|
4
|
-
require "test/unit"
|
5
1
|
require "shoulda"
|
6
2
|
require "mocha"
|
7
3
|
require "fileutils"
|
8
4
|
require "rack/mock"
|
5
|
+
require "vanilla"
|
9
6
|
|
10
7
|
module Vanilla
|
11
8
|
module Test
|
12
9
|
def setup_clean_environment
|
13
|
-
FileUtils.mkdir_p(File.dirname(
|
10
|
+
FileUtils.mkdir_p(File.dirname(config_file_for_tests))
|
14
11
|
clear_soup
|
15
|
-
File.open(
|
16
|
-
@app = Vanilla::App.new(
|
12
|
+
File.open(config_file_for_tests, 'w') { |f| f.write({:soup => soup_path}.to_yaml) }
|
13
|
+
@app = Vanilla::App.new(config_file_for_tests)
|
17
14
|
|
18
15
|
require "vanilla/dynasnips/current_snip"
|
19
16
|
@app.soup << CurrentSnip.snip_attributes
|
@@ -33,19 +30,17 @@ module Vanilla
|
|
33
30
|
end
|
34
31
|
|
35
32
|
def assert_response_body(expected, uri)
|
36
|
-
assert_equal expected, response_body_for(uri)
|
33
|
+
assert_equal expected.strip, response_body_for(uri).strip
|
37
34
|
end
|
38
35
|
|
39
36
|
def set_main_template(template_content)
|
40
|
-
system = @app.soup["system"] || Snip.new({:name => "system"}, @app.soup)
|
37
|
+
system = @app.soup["system"] || Soup::Snip.new({:name => "system"}, @app.soup)
|
41
38
|
system.main_template = template_content
|
42
39
|
system.save
|
43
40
|
end
|
44
41
|
|
45
42
|
def create_snip(params)
|
46
|
-
|
47
|
-
s.save
|
48
|
-
s
|
43
|
+
@app.soup << params
|
49
44
|
end
|
50
45
|
|
51
46
|
def mock_env_for_url(url)
|
@@ -56,12 +51,12 @@ module Vanilla
|
|
56
51
|
Rack::Request.new(mock_env_for_url(url))
|
57
52
|
end
|
58
53
|
|
59
|
-
def
|
54
|
+
def config_file_for_tests
|
60
55
|
File.join(File.dirname(__FILE__), "tmp", "config.yml")
|
61
56
|
end
|
62
57
|
|
63
|
-
def
|
64
|
-
File.open(
|
58
|
+
def config_for_tests(options={})
|
59
|
+
File.open(config_file_for_tests, 'w') { |f| f.write({:soup => soup_path}.update(options).to_yaml) }
|
65
60
|
end
|
66
61
|
|
67
62
|
def soup_path
|
@@ -1,8 +1,4 @@
|
|
1
1
|
CurrentSnip--- # Soup attributes
|
2
|
-
:created_at: 2010-01-04 13:54:23.700595 +00:00
|
3
|
-
:updated_at: 2010-01-04 13:54:23.700596 +00:00
|
4
|
-
:name: current_snip
|
5
|
-
:render_as: Ruby
|
6
2
|
:usage: |-
|
7
3
|
The current_snip dyna normally returns the result of rendering the snip named by the
|
8
4
|
'snip' value in the parameters. This way, it can be used in templates to place the currently
|
@@ -13,3 +9,7 @@ CurrentSnip--- # Soup attributes
|
|
13
9
|
{current_snip name}
|
14
10
|
|
15
11
|
will output the name of the current snip, or the name of the snip currently being edited.
|
12
|
+
:updated_at: 2010-06-10 15:00:13.119623 +01:00
|
13
|
+
:render_as: Ruby
|
14
|
+
:name: current_snip
|
15
|
+
:created_at: 2010-06-10 15:00:13.119621 +01:00
|
data/test/tmp/soup/system.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
--- # Soup attributes
|
2
|
-
:
|
3
|
-
:updated_at: 2010-01-04 13:54:23.701148 +00:00
|
2
|
+
:updated_at: 2010-06-10 15:00:13.120125 +01:00
|
4
3
|
:name: system
|
5
4
|
:main_template: "{current_snip}"
|
5
|
+
:created_at: 2010-06-10 15:00:13.120123 +01:00
|
data/test/vanilla_app_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "test_helper"
|
2
2
|
|
3
3
|
class VanillaAppTest < Vanilla::TestCase
|
4
4
|
|
@@ -39,7 +39,7 @@ class VanillaAppTest < Vanilla::TestCase
|
|
39
39
|
|
40
40
|
context "when detecting the snip renderer" do
|
41
41
|
setup do
|
42
|
-
@app = Vanilla::App.new(
|
42
|
+
@app = Vanilla::App.new(config_file_for_tests)
|
43
43
|
end
|
44
44
|
|
45
45
|
should "return the constant refered to in the render_as property of the snip" do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "test_helper"
|
2
2
|
|
3
3
|
class VanillaRequestTest < Vanilla::TestCase
|
4
4
|
context "when requesting the root" do
|
@@ -14,8 +14,8 @@ class VanillaRequestTest < Vanilla::TestCase
|
|
14
14
|
|
15
15
|
context "with a start snip configuration set" do
|
16
16
|
setup do
|
17
|
-
|
18
|
-
@app = Vanilla::App.new(
|
17
|
+
config_for_tests(:root_snip => "custom")
|
18
|
+
@app = Vanilla::App.new(config_file_for_tests)
|
19
19
|
end
|
20
20
|
|
21
21
|
should "use specified snip as default" do
|
data/test/vanilla_soup_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vanilla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 11
|
8
|
+
- 0
|
9
|
+
version: 1.11.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- James Adam
|
@@ -9,99 +14,143 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-06-10 00:00:00 +01:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rack
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 9
|
30
|
+
- 1
|
23
31
|
version: 0.9.1
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: soup
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
- 9
|
44
|
+
- 10
|
45
|
+
version: 0.9.10
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: ratom
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
- 3
|
58
|
+
- 5
|
43
59
|
version: 0.3.5
|
44
|
-
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
45
62
|
- !ruby/object:Gem::Dependency
|
46
63
|
name: RedCloth
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
66
|
requirements:
|
51
67
|
- - ">="
|
52
68
|
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 4
|
71
|
+
- 1
|
72
|
+
- 1
|
53
73
|
version: 4.1.1
|
54
|
-
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
55
76
|
- !ruby/object:Gem::Dependency
|
56
77
|
name: BlueCloth
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
60
80
|
requirements:
|
61
81
|
- - ">="
|
62
82
|
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 0
|
86
|
+
- 0
|
63
87
|
version: 1.0.0
|
64
|
-
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
65
90
|
- !ruby/object:Gem::Dependency
|
66
91
|
name: treetop
|
67
|
-
|
68
|
-
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
70
94
|
requirements:
|
71
95
|
- - ">="
|
72
96
|
- !ruby/object:Gem::Version
|
97
|
+
segments:
|
98
|
+
- 1
|
99
|
+
- 4
|
100
|
+
- 1
|
73
101
|
version: 1.4.1
|
74
|
-
|
102
|
+
type: :runtime
|
103
|
+
version_requirements: *id006
|
75
104
|
- !ruby/object:Gem::Dependency
|
76
105
|
name: warden
|
77
|
-
|
78
|
-
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
80
108
|
requirements:
|
81
109
|
- - ">="
|
82
110
|
- !ruby/object:Gem::Version
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
- 5
|
114
|
+
- 2
|
83
115
|
version: 0.5.2
|
84
|
-
|
116
|
+
type: :runtime
|
117
|
+
version_requirements: *id007
|
85
118
|
- !ruby/object:Gem::Dependency
|
86
119
|
name: shoulda
|
87
|
-
|
88
|
-
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
prerelease: false
|
121
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
90
122
|
requirements:
|
91
123
|
- - ">="
|
92
124
|
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
93
127
|
version: "0"
|
94
|
-
|
128
|
+
type: :development
|
129
|
+
version_requirements: *id008
|
95
130
|
- !ruby/object:Gem::Dependency
|
96
131
|
name: mocha
|
132
|
+
prerelease: false
|
133
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
segments:
|
138
|
+
- 0
|
139
|
+
version: "0"
|
97
140
|
type: :development
|
98
|
-
|
99
|
-
|
141
|
+
version_requirements: *id009
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: haml
|
144
|
+
prerelease: false
|
145
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
100
146
|
requirements:
|
101
147
|
- - ">="
|
102
148
|
- !ruby/object:Gem::Version
|
149
|
+
segments:
|
150
|
+
- 0
|
103
151
|
version: "0"
|
104
|
-
|
152
|
+
type: :development
|
153
|
+
version_requirements: *id010
|
105
154
|
description:
|
106
155
|
email: james@lazyatom.com.com
|
107
156
|
executables:
|
@@ -119,15 +168,18 @@ files:
|
|
119
168
|
- test/base_renderer_test.rb
|
120
169
|
- test/dynasnip_test.rb
|
121
170
|
- test/erb_renderer_test.rb
|
171
|
+
- test/haml_renderer_test.rb
|
122
172
|
- test/markdown_renderer_test.rb
|
123
173
|
- test/raw_renderer_test.rb
|
124
174
|
- test/ruby_renderer_test.rb
|
125
175
|
- test/snip_reference_parser_test.rb
|
126
176
|
- test/snip_reference_test.rb
|
177
|
+
- test/soup/whatwhat.yml
|
127
178
|
- test/test_helper.rb
|
128
179
|
- test/tmp/config.yml
|
129
180
|
- test/tmp/soup/current_snip.yml
|
130
181
|
- test/tmp/soup/system.yml
|
182
|
+
- test/tmp/soup/temp.yml
|
131
183
|
- test/vanilla_app_test.rb
|
132
184
|
- test/vanilla_presenting_test.rb
|
133
185
|
- test/vanilla_request_test.rb
|
@@ -150,7 +202,6 @@ files:
|
|
150
202
|
- lib/vanilla/dynasnips/link_to_current_snip.rb
|
151
203
|
- lib/vanilla/dynasnips/logout.rb
|
152
204
|
- lib/vanilla/dynasnips/new.rb
|
153
|
-
- lib/vanilla/dynasnips/notes.rb
|
154
205
|
- lib/vanilla/dynasnips/pre.rb
|
155
206
|
- lib/vanilla/dynasnips/rand.rb
|
156
207
|
- lib/vanilla/dynasnips/raw.rb
|
@@ -158,6 +209,7 @@ files:
|
|
158
209
|
- lib/vanilla/renderers/base.rb
|
159
210
|
- lib/vanilla/renderers/bold.rb
|
160
211
|
- lib/vanilla/renderers/erb.rb
|
212
|
+
- lib/vanilla/renderers/haml.rb
|
161
213
|
- lib/vanilla/renderers/markdown.rb
|
162
214
|
- lib/vanilla/renderers/raw.rb
|
163
215
|
- lib/vanilla/renderers/ruby.rb
|
@@ -170,7 +222,7 @@ files:
|
|
170
222
|
- lib/vanilla/snips/start.rb
|
171
223
|
- lib/vanilla/snips/system.rb
|
172
224
|
- lib/vanilla/snips/tutorial.rb
|
173
|
-
- lib/vanilla/
|
225
|
+
- lib/vanilla/soup/timestamp_backend.rb
|
174
226
|
- lib/vanilla/static.rb
|
175
227
|
- lib/vanilla.rb
|
176
228
|
- bin/vanilla
|
@@ -192,18 +244,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
244
|
requirements:
|
193
245
|
- - ">="
|
194
246
|
- !ruby/object:Gem::Version
|
247
|
+
segments:
|
248
|
+
- 0
|
195
249
|
version: "0"
|
196
|
-
version:
|
197
250
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
251
|
requirements:
|
199
252
|
- - ">="
|
200
253
|
- !ruby/object:Gem::Version
|
254
|
+
segments:
|
255
|
+
- 0
|
201
256
|
version: "0"
|
202
|
-
version:
|
203
257
|
requirements: []
|
204
258
|
|
205
259
|
rubyforge_project: vanilla
|
206
|
-
rubygems_version: 1.3.
|
260
|
+
rubygems_version: 1.3.6
|
207
261
|
signing_key:
|
208
262
|
specification_version: 3
|
209
263
|
summary: A bliki-type web content thing.
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'vanilla/dynasnip'
|
2
|
-
|
3
|
-
class Notes < Dynasnip
|
4
|
-
def get(*args)
|
5
|
-
all_notes_content = all_notes.map { |snip|
|
6
|
-
render_note(snip)
|
7
|
-
}.join("")
|
8
|
-
snip.main_template.gsub('[notes]', all_notes_content)
|
9
|
-
end
|
10
|
-
|
11
|
-
def post(*args)
|
12
|
-
new_note = Snip.new(cleaned_params)
|
13
|
-
new_note.name = "note_#{snip.next_note_id}"
|
14
|
-
new_note.kind = "note"
|
15
|
-
new_note.save
|
16
|
-
increment_next_id
|
17
|
-
get(*args)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def all_notes
|
23
|
-
Snip.with(:kind, "= 'note'")
|
24
|
-
end
|
25
|
-
|
26
|
-
def increment_next_id
|
27
|
-
s = snip
|
28
|
-
s.next_note_id = s.next_note_id.to_i + 1
|
29
|
-
s.save
|
30
|
-
end
|
31
|
-
|
32
|
-
def render_note(note)
|
33
|
-
note_link = link_to(note.name)
|
34
|
-
note_content = Vanilla.render(note.name, nil, context, [])
|
35
|
-
snip.note_template.gsub('[note]', note_content).gsub('[link]', note_link)
|
36
|
-
end
|
37
|
-
|
38
|
-
attribute :next_note_id, 1
|
39
|
-
|
40
|
-
attribute :note_template, %{<dt>[link]</dt><dd>[note]</dd>}
|
41
|
-
attribute :main_template, %{<dl>[notes]</dl>}
|
42
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'soup'
|
2
|
-
require 'delegate'
|
3
|
-
|
4
|
-
module Vanilla
|
5
|
-
class SoupWithTimestamps < DelegateClass(Soup)
|
6
|
-
def initialize(config)
|
7
|
-
super(Soup.new(config))
|
8
|
-
end
|
9
|
-
|
10
|
-
def <<(attributes)
|
11
|
-
attributes[:created_at] ||= Time.now
|
12
|
-
attributes[:created_at] = Time.parse(attributes[:created_at]) if attributes[:created_at].is_a?(String)
|
13
|
-
attributes[:updated_at] = Time.now
|
14
|
-
super
|
15
|
-
end
|
16
|
-
|
17
|
-
def new_snip(attributes)
|
18
|
-
Snip.new(attributes, self)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|