sparrow-entity 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd8e492cb64787e3312b6801d81a8faeb56f471ff3d499757b6897c259f7eff1
4
- data.tar.gz: b0895dc4b2cdbb2a4b9757813304a35e1b404e39037cef9873a57cc300e2d958
3
+ metadata.gz: 69113e86b45a13eb5d19a0943cb23cf4e3c8d3851335570d1712de019a316b7f
4
+ data.tar.gz: 24556d2a767791e72ac5d22521e3fd2b1bede695ee9eb317b66f356b0dab673e
5
5
  SHA512:
6
- metadata.gz: 8e96039af0b9a4d5105642701fa8b1e345497f34eaa4f4d16348a478c8956de54f2dd9cab1763049ce672b011727212cdbc5112304e78d5a91c9551d762a9220
7
- data.tar.gz: 17993065f31455e924e22957c1a0570b92fc3c0878d9b6de41c93edeec15b6dfbc49c40d3eaaee2ef48c193d798d85b12f7d798a0a263de7635c98be2876101b
6
+ metadata.gz: 9bf271a192c53689eee128a566a2fa0b212b45830893fe8e41c27460bba8a12ad7c1dc3538bdde1afb536e77df5d34d9eca4820a354cba7dbf81c33012e42edb
7
+ data.tar.gz: cf9accc428f958c6eba624ff8199d14d7df63e696c78f13bbe200d3d7818f4e6bec634ed459b4a30c48ef8418d4e20bea25be883a76921d690c458c982b3abdd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sparrow-entity (0.1.2)
4
+ sparrow-entity (0.1.3)
5
5
  activemodel
6
6
  activemodel_object_info (~> 0.2.0)
7
7
  activesupport
data/README.md CHANGED
@@ -57,6 +57,32 @@ me.birthday
57
57
  # => <Date 2022年1月1日> 实例对象
58
58
  ```
59
59
 
60
+ ### 布尔型属性
61
+
62
+ 当需要定义一个属性字段为布尔型时,可以使用本 gem 内置的 `Sparrow::Boolean` 作为类型定义即可。当赋予 **true** 值或者等价于(即使用 `present?` 判断为真)其值时被赋予真值,否则被赋予假值。同样的,如果没有对其进行赋值,则获取该字段属性会返回 **nil** 空值。
63
+
64
+ ```ruby
65
+ class OtherEntity < Sparrow::Base
66
+ field :married, Sparrow::Boolean
67
+ end
68
+
69
+ obj = OtherEntity.new
70
+ obj.married
71
+ # => nil
72
+
73
+ obj.married = true
74
+ obj.married
75
+ # => true
76
+
77
+ obj.married = ''
78
+ obj.married
79
+ # => false
80
+
81
+ obj.married = 'yes'
82
+ obj.married
83
+ # => true
84
+ ```
85
+
60
86
  ### 赋值
61
87
 
62
88
  上例中也展示了为实体类的实例进行属性赋值的方式之一,即创建时指定属性名对应的值。当然也可以在创建后分别给属性赋值。
@@ -11,7 +11,7 @@ module Sparrow
11
11
  TARGET_RELATIVE_PATH = 'app/entities'
12
12
 
13
13
  # 单模组模板
14
- MODULE_TEMPLATE =<<~MODULE.strip
14
+ MODULE_TEMPLATE = <<~MODULE.strip
15
15
  module %{module_name}
16
16
  %{module_content}
17
17
  end
@@ -59,11 +59,11 @@ module Sparrow
59
59
  end
60
60
 
61
61
  def __module_content__(name, content)
62
- return MODULE_TEMPLATE % { module_name: name.camelize, module_content: indent(content, 2) }
62
+ MODULE_TEMPLATE % { module_name: name.camelize, module_content: indent(content, 2) }
63
63
  end
64
64
 
65
65
  def __class_content__
66
- return CLASS_TEMPLATE % { class_name: file_name.camelize }
66
+ CLASS_TEMPLATE % { class_name: file_name.camelize }
67
67
  end
68
68
 
69
69
  def __class_body__
@@ -76,7 +76,9 @@ module Sparrow
76
76
  current = paths.shift
77
77
  content = paths.size.positive? ? __module_body__(paths) : ''
78
78
  result = current ? __module_content__(current, content) : ''
79
- result.each_line.select { |line| line.present? }.join
79
+ result = result.each_line.select(&:present?).join
80
+ result << "\n"
81
+ result
80
82
  end
81
83
  end
82
84
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sparrow
4
+ #
5
+ # 定义一个用来负责处理布尔值类型的对象类。
6
+ #
7
+ # @author Shiner <shiner527@hotmail.com>
8
+ #
9
+ class Boolean
10
+ # 定义一个空类来处理布尔值内容
11
+ DEFAULT_VALUE = true
12
+ end
13
+ end
@@ -98,6 +98,11 @@ module Sparrow
98
98
  end
99
99
  instance_variable_set(instance_var_name, val)
100
100
  end
101
+ elsif attr_class == ::Sparrow::Boolean
102
+ # 如果是布尔值类型
103
+ define_method(setter_name) do |value|
104
+ instance_variable_set(instance_var_name, value.present?)
105
+ end
101
106
  else
102
107
  # 其他类型原封不动
103
108
  define_method(setter_name) do |value|
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Sparrow
4
4
  # 当前版本号
5
- VERSION = '0.1.2'
5
+ VERSION = '0.1.3'
6
6
  # 当前综述
7
7
  SUMMARY = 'Provide an easy approach to build entity object for data that can not be reflected to database tables.'
8
8
  # 当前详述
data/lib/sparrow.rb CHANGED
@@ -4,6 +4,7 @@ require 'sparrow/version'
4
4
  require 'active_support'
5
5
  require 'active_model'
6
6
  require 'activemodel_object_info'
7
+ require 'sparrow/boolean'
7
8
  require 'sparrow/class_methods'
8
9
  require 'sparrow/base'
9
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparrow-entity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - shiner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-07 00:00:00.000000000 Z
11
+ date: 2022-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -182,6 +182,7 @@ files:
182
182
  - lib/generators/sparrow/entity/templates/sparrow_entity.rb.tt
183
183
  - lib/sparrow.rb
184
184
  - lib/sparrow/base.rb
185
+ - lib/sparrow/boolean.rb
185
186
  - lib/sparrow/class_methods.rb
186
187
  - lib/sparrow/version.rb
187
188
  - sparrow.gemspec