almost-happy 0.1.1 → 0.2.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/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