almost-happy 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -33,8 +33,9 @@ using the specific format etc.
33
33
 
34
34
  When a model is marked as publishable, it provides the following instance methods:
35
35
 
36
- * `published?` - returns a boolean indicating if it's publishe
36
+ * `published?` - returns a boolean indicating if it's published. also aliased to `published` for forms.
37
37
  * `publish!` - mark the post as published right now.
38
+ * `published=(value)` - mark items as published in forms.
38
39
 
39
40
  And, the following class methods:
40
41
 
data/Rakefile CHANGED
@@ -16,6 +16,7 @@ begin
16
16
  gem.add_dependency "RedCloth"
17
17
  gem.add_dependency "rdiscount"
18
18
  gem.add_dependency "nokogiri"
19
+ gem.add_dependency "open4" # For albino
19
20
  gem.add_development_dependency "shoulda", ">= 0"
20
21
  end
21
22
  Jeweler::GemcutterTasks.new
data/almost-happy.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{almost-happy}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Darcy Laycock"]
12
- s.date = %q{2010-05-03}
12
+ s.date = %q{2010-07-07}
13
13
  s.description = %q{Helpers, convertors etc for Rails 3 to make page / post models for simple cases simple}
14
14
  s.email = %q{sutto@sutto.net}
15
15
  s.extra_rdoc_files = [
@@ -38,7 +38,7 @@ Gem::Specification.new do |s|
38
38
  s.homepage = %q{http://github.com/Sutto/almost-happy}
39
39
  s.rdoc_options = ["--charset=UTF-8"]
40
40
  s.require_paths = ["lib"]
41
- s.rubygems_version = %q{1.3.6}
41
+ s.rubygems_version = %q{1.3.7}
42
42
  s.summary = %q{Simple tools for AR + Rails 3 to help make managing your content easy}
43
43
  s.test_files = [
44
44
  "test/helper.rb",
@@ -49,17 +49,19 @@ Gem::Specification.new do |s|
49
49
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
50
50
  s.specification_version = 3
51
51
 
52
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0.beta3"])
54
54
  s.add_runtime_dependency(%q<RedCloth>, [">= 0"])
55
55
  s.add_runtime_dependency(%q<rdiscount>, [">= 0"])
56
56
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
57
+ s.add_runtime_dependency(%q<open4>, [">= 0"])
57
58
  s.add_development_dependency(%q<shoulda>, [">= 0"])
58
59
  else
59
60
  s.add_dependency(%q<activerecord>, [">= 3.0.0.beta3"])
60
61
  s.add_dependency(%q<RedCloth>, [">= 0"])
61
62
  s.add_dependency(%q<rdiscount>, [">= 0"])
62
63
  s.add_dependency(%q<nokogiri>, [">= 0"])
64
+ s.add_dependency(%q<open4>, [">= 0"])
63
65
  s.add_dependency(%q<shoulda>, [">= 0"])
64
66
  end
65
67
  else
@@ -67,6 +69,7 @@ Gem::Specification.new do |s|
67
69
  s.add_dependency(%q<RedCloth>, [">= 0"])
68
70
  s.add_dependency(%q<rdiscount>, [">= 0"])
69
71
  s.add_dependency(%q<nokogiri>, [">= 0"])
72
+ s.add_dependency(%q<open4>, [">= 0"])
70
73
  s.add_dependency(%q<shoulda>, [">= 0"])
71
74
  end
72
75
  end
@@ -3,37 +3,37 @@ require 'set'
3
3
  module AlmostHappy
4
4
  module Convertable
5
5
  extend ActiveSupport::Concern
6
-
6
+
7
7
  included do
8
8
  class_attribute :convertable_fields
9
9
  self.convertable_fields = Set.new
10
10
  before_save :process_convertable_sections
11
11
  end
12
-
12
+
13
13
  module ClassMethods
14
-
14
+
15
15
  def validate_convertable_format
16
16
  validates_presence_of :format
17
17
  validates_with AlmostHappy::FormatValidator
18
18
  end
19
-
19
+
20
20
  end
21
-
21
+
22
22
  module InstanceMethods
23
-
23
+
24
24
  protected
25
-
25
+
26
26
  def process_convertable_sections
27
27
  convertable_fields.each do |field|
28
28
  AlmostHappy::Convertor.new(self, field).render if should_render?(field)
29
29
  end
30
30
  end
31
-
31
+
32
32
  def should_render?(field)
33
33
  send(:"rendered_#{field}").blank? || format_changed? || send(:"#{field}_changed?")
34
34
  end
35
-
35
+
36
36
  end
37
-
37
+
38
38
  end
39
- end
39
+ end
@@ -1,18 +1,30 @@
1
1
  module AlmostHappy
2
2
  module Publishable
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  module InstanceMethods
6
-
6
+
7
+ def published=(value)
8
+ # Sets the attribute, uses the ar conversion method)
9
+ if defined?(ActiveRecord)
10
+ value = ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
11
+ else
12
+ value = value.present? && !["0", "false"].include?(value.to_s)
13
+ end
14
+ real_value = value ? Time.now : nil
15
+ self.published_at = value
16
+ end
17
+
7
18
  def published?
8
19
  published_at.present? && published_at <= Time.now
9
20
  end
10
-
21
+ alias published published?
22
+
11
23
  def publish!
12
24
  update_attribute :published_at, Time.now
13
25
  end
14
-
26
+
15
27
  end
16
-
28
+
17
29
  end
18
- end
30
+ end
@@ -1,22 +1,26 @@
1
1
  module AlmostHappy
2
2
  module Scopeable
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  module ClassMethods
6
-
6
+
7
7
  def published
8
8
  where 'published_at IS NOT NULL AND published_at <= ?', Time.now
9
9
  end
10
-
10
+
11
+ def unpublished
12
+ where 'published_at IS NULL OR published_at > ?', Time.now
13
+ end
14
+
11
15
  def ordered
12
16
  order 'published_at DESC'
13
17
  end
14
-
18
+
15
19
  def ordered_for_preview
16
20
  order '(published_at IS NULL) DESC, published_at DESC'
17
21
  end
18
-
22
+
19
23
  end
20
-
24
+
21
25
  end
22
- end
26
+ end
data/lib/almost_happy.rb CHANGED
@@ -4,19 +4,19 @@ require 'active_support/core_ext/class/attribute'
4
4
  require 'active_support/concern'
5
5
 
6
6
  module AlmostHappy
7
- VERSION = '0.1.1'.freeze
8
-
7
+ VERSION = '0.2.0'.freeze
8
+
9
9
  extend ActiveSupport::Autoload
10
-
10
+
11
11
  autoload :ActiveRecordMixin
12
-
12
+
13
13
  autoload :Convertor
14
14
  autoload :FormatValidator
15
-
15
+
16
16
  autoload :Convertable
17
17
  autoload :Scopeable
18
18
  autoload :Publishable
19
-
19
+
20
20
  ::ActiveRecord::Base.send :include, ActiveRecordMixin if defined?(::ActiveRecord::Base)
21
-
22
- end
21
+
22
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: almost-happy
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Darcy Laycock
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-03 00:00:00 +08:00
18
+ date: 2010-07-07 00:00:00 +08:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: activerecord
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: -1848230021
27
30
  segments:
28
31
  - 3
29
32
  - 0
@@ -36,9 +39,11 @@ dependencies:
36
39
  name: RedCloth
37
40
  prerelease: false
38
41
  requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
39
43
  requirements:
40
44
  - - ">="
41
45
  - !ruby/object:Gem::Version
46
+ hash: 3
42
47
  segments:
43
48
  - 0
44
49
  version: "0"
@@ -48,9 +53,11 @@ dependencies:
48
53
  name: rdiscount
49
54
  prerelease: false
50
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
51
57
  requirements:
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
60
+ hash: 3
54
61
  segments:
55
62
  - 0
56
63
  version: "0"
@@ -60,26 +67,44 @@ dependencies:
60
67
  name: nokogiri
61
68
  prerelease: false
62
69
  requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
63
71
  requirements:
64
72
  - - ">="
65
73
  - !ruby/object:Gem::Version
74
+ hash: 3
66
75
  segments:
67
76
  - 0
68
77
  version: "0"
69
78
  type: :runtime
70
79
  version_requirements: *id004
71
80
  - !ruby/object:Gem::Dependency
72
- name: shoulda
81
+ name: open4
73
82
  prerelease: false
74
83
  requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
75
85
  requirements:
76
86
  - - ">="
77
87
  - !ruby/object:Gem::Version
88
+ hash: 3
78
89
  segments:
79
90
  - 0
80
91
  version: "0"
81
- type: :development
92
+ type: :runtime
82
93
  version_requirements: *id005
94
+ - !ruby/object:Gem::Dependency
95
+ name: shoulda
96
+ prerelease: false
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ type: :development
107
+ version_requirements: *id006
83
108
  description: Helpers, convertors etc for Rails 3 to make page / post models for simple cases simple
84
109
  email: sutto@sutto.net
85
110
  executables: []
@@ -117,23 +142,27 @@ rdoc_options:
117
142
  require_paths:
118
143
  - lib
119
144
  required_ruby_version: !ruby/object:Gem::Requirement
145
+ none: false
120
146
  requirements:
121
147
  - - ">="
122
148
  - !ruby/object:Gem::Version
149
+ hash: 3
123
150
  segments:
124
151
  - 0
125
152
  version: "0"
126
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
127
155
  requirements:
128
156
  - - ">="
129
157
  - !ruby/object:Gem::Version
158
+ hash: 3
130
159
  segments:
131
160
  - 0
132
161
  version: "0"
133
162
  requirements: []
134
163
 
135
164
  rubyforge_project:
136
- rubygems_version: 1.3.6
165
+ rubygems_version: 1.3.7
137
166
  signing_key:
138
167
  specification_version: 3
139
168
  summary: Simple tools for AR + Rails 3 to help make managing your content easy