sparrow-entity 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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