irwi 0.1.1 → 0.1.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{irwi}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alexey Noskov"]
@@ -57,6 +57,7 @@ Gem::Specification.new do |s|
57
57
  "spec/comparators/diff_lcs_spec.rb",
58
58
  "spec/config_spec.rb",
59
59
  "spec/extensions/controllers/wiki_pages_spec.rb",
60
+ "spec/formatters/red_cloth_spec.rb",
60
61
  "spec/helpers/wiki_pages_helper_spec.rb",
61
62
  "spec/rcov.opts",
62
63
  "spec/spec.opts",
@@ -75,6 +76,7 @@ Gem::Specification.new do |s|
75
76
  "spec/support/template_finder_spec.rb",
76
77
  "spec/support/route_mapper_spec.rb",
77
78
  "spec/config_spec.rb",
79
+ "spec/formatters/red_cloth_spec.rb",
78
80
  "spec/extensions/controllers/wiki_pages_spec.rb",
79
81
  "spec/helpers/wiki_pages_helper_spec.rb",
80
82
  "spec/spec_helper.rb"
@@ -1,5 +1,7 @@
1
1
  class Irwi::Config
2
2
 
3
+ attr_accessor_with_default :controller_name, 'wiki_pages'
4
+
3
5
  attr_accessor_with_default :user_class_name, 'User'
4
6
 
5
7
  attr_accessor_with_default :page_class_name, 'WikiPage'
@@ -15,4 +17,16 @@ class Irwi::Config
15
17
  Irwi::Comparators::DiffLcs.new
16
18
  end
17
19
 
20
+ def page_class
21
+ page_class_name.constantize
22
+ end
23
+
24
+ def page_vrsion_class
25
+ page_version_class_name.constantize
26
+ end
27
+
28
+ def user_class
29
+ user_class_name.constantize
30
+ end
31
+
18
32
  end
@@ -3,7 +3,7 @@ module Irwi::Extensions::Controllers::WikiPages
3
3
  module ClassMethods
4
4
 
5
5
  def page_class
6
- @page_class ||= Irwi.config.page_class_name.constantize
6
+ @page_class ||= Irwi.config.page_class
7
7
  end
8
8
 
9
9
  def set_page_class(arg)
@@ -3,7 +3,7 @@ module Irwi::Extensions::Models::WikiPage
3
3
  module ClassMethods
4
4
 
5
5
  def find_by_path_or_new( path )
6
- self.find_by_path( path ) || self.new( :path => path )
6
+ self.find_by_path( path ) || self.new( :path => path, :title => path )
7
7
  end
8
8
 
9
9
  end
@@ -24,7 +24,7 @@ module Irwi::Helpers::WikiPagesHelper
24
24
  end
25
25
 
26
26
  def wiki_content( text )
27
- sanitize( Irwi.config.formatter.format( text ) )
27
+ sanitize( wiki_linkify( Irwi.config.formatter.format( text ) ) )
28
28
  end
29
29
 
30
30
  def wiki_diff( old_text, new_text )
@@ -32,11 +32,25 @@ module Irwi::Helpers::WikiPagesHelper
32
32
  end
33
33
 
34
34
  def wiki_user( user )
35
- return '<Unknown>' if user.nil?
35
+ return '<Unknown>' unless user
36
36
 
37
37
  "User##{user.id}"
38
38
  end
39
39
 
40
+ def wiki_linkify( str )
41
+ str.gsub /\[\[([^\[\]]+)\]\]/ do |m|
42
+ "<a href=\"#{wiki_link $1}\">#{$1}</a>"
43
+ end
44
+ end
45
+
46
+ def wiki_link( title )
47
+ if page = Irwi.config.page_class.find_by_title( title )
48
+ url_for( :controller => Irwi.config.controller_name, :action => :show, :path => page.path )
49
+ else
50
+ url_for( :controller => Irwi.config.controller_name, :action => :show, :path => title )
51
+ end
52
+ end
53
+
40
54
  ##
41
55
  # Instead of having to translate strings and defining a default value:
42
56
  #
@@ -0,0 +1,17 @@
1
+ require "spec/spec_helper"
2
+
3
+ describe Irwi::Formatters::RedCloth do
4
+
5
+ before(:each) do
6
+ @f = Irwi::Formatters::RedCloth.new
7
+ end
8
+
9
+ specify "should proces bold text" do
10
+ @f.format('*Place* ff').should == '<p><strong>Place</strong> ff</p>'
11
+ end
12
+
13
+ specify "should proces italic text" do
14
+ @f.format('_Mom_ ff').should == '<p><em>Mom</em> ff</p>'
15
+ end
16
+
17
+ end
@@ -27,6 +27,9 @@ describe Irwi::Helpers::WikiPagesHelper do
27
27
  it { @m.should respond_to :wiki_page_history }
28
28
  it { @m.should respond_to :wiki_page_style }
29
29
 
30
+ it { @m.should respond_to :wiki_link }
31
+ it { @m.should respond_to :wiki_linkify }
32
+
30
33
  it { @m.should respond_to :wt }
31
34
 
32
35
  specify "should format and sanitize content with current formatter and #sanitize" do
@@ -69,6 +72,38 @@ describe Irwi::Helpers::WikiPagesHelper do
69
72
  @m.wiki_page_history( page ).should == 'partial_body'
70
73
  end
71
74
 
75
+ specify "should linkify string" do
76
+
77
+ @m.should_receive(:wiki_link).with('Some other page').and_return('url')
78
+
79
+ @m.wiki_linkify( '[[Some other page]] - link' ).should == '<a href="url">Some other page</a> - link'
80
+ end
81
+
82
+ specify "should generate link for non-existent page" do
83
+ page_class = mock "WikiPageClass"
84
+ page_class.should_receive(:find_by_title).with('Page title').and_return(nil)
85
+
86
+ Irwi.config.should_receive(:page_class).and_return(page_class)
87
+
88
+ @m.should_receive(:url_for).with( :controller => 'wiki_pages', :action => :show, :path => 'Page title' ).and_return('url')
89
+
90
+ @m.wiki_link( 'Page title' ).should == 'url'
91
+ end
92
+
93
+ specify "should generate link for existent page" do
94
+ page = mock "WikiPage"
95
+ page.should_receive(:path).and_return('page_path')
96
+
97
+ page_class = mock "WikiPageClass"
98
+ page_class.should_receive(:find_by_title).with('Page title').and_return(page)
99
+
100
+ Irwi.config.should_receive(:page_class).and_return(page_class)
101
+
102
+ @m.should_receive(:url_for).with( :controller => 'wiki_pages', :action => :show, :path => 'page_path' ).and_return('url')
103
+
104
+ @m.wiki_link( 'Page title' ).should == 'url'
105
+ end
106
+
72
107
  end
73
108
 
74
109
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: irwi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Noskov
@@ -82,6 +82,7 @@ files:
82
82
  - spec/comparators/diff_lcs_spec.rb
83
83
  - spec/config_spec.rb
84
84
  - spec/extensions/controllers/wiki_pages_spec.rb
85
+ - spec/formatters/red_cloth_spec.rb
85
86
  - spec/helpers/wiki_pages_helper_spec.rb
86
87
  - spec/rcov.opts
87
88
  - spec/spec.opts
@@ -122,6 +123,7 @@ test_files:
122
123
  - spec/support/template_finder_spec.rb
123
124
  - spec/support/route_mapper_spec.rb
124
125
  - spec/config_spec.rb
126
+ - spec/formatters/red_cloth_spec.rb
125
127
  - spec/extensions/controllers/wiki_pages_spec.rb
126
128
  - spec/helpers/wiki_pages_helper_spec.rb
127
129
  - spec/spec_helper.rb