sso-elements-fmk 0.1.1

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.
@@ -0,0 +1,112 @@
1
+ module SSO
2
+ module Elements
3
+ class Element
4
+ attr_accessor :fields
5
+
6
+ def initialize
7
+ @fields = {}
8
+ end
9
+
10
+ def set_field(index, field)
11
+ @fields[index] = field
12
+
13
+ return if index == 'ID'
14
+ return if index == 'Name'
15
+
16
+ define_singleton_method(index) {@fields[index].value }
17
+ define_singleton_method("#{index}=") { |value| @fields[index].value = value }
18
+ end
19
+
20
+ def set_multi_field(index, field)
21
+ @fields[index] ||= []
22
+ @fields[index] << field
23
+
24
+ define_singleton_method(index) {@fields[index] }
25
+ end
26
+
27
+ def clone
28
+ element = Element.new
29
+ element.fields = {}
30
+
31
+ @fields.each do |name, field|
32
+ element.set_field(name, Field.new(field.type, field.value, field.index))
33
+ end
34
+
35
+ element
36
+ end
37
+
38
+ def field_names
39
+ @fields.keys
40
+ end
41
+
42
+ def [](index)
43
+ @fields[index].value
44
+ end
45
+
46
+ def []=(index, value)
47
+ @fields[index].value = value
48
+ end
49
+
50
+ def compact
51
+ result = {}
52
+
53
+ @fields.each do |name, field|
54
+ result[name] = field.value
55
+ end
56
+
57
+ result
58
+ end
59
+
60
+ def id
61
+ @fields['ID'].value
62
+ end
63
+
64
+ def id=(value)
65
+ @fields['ID'].value = value
66
+ end
67
+
68
+ def name
69
+ @fields['Name'].value
70
+ end
71
+
72
+ def name=(value)
73
+ @fields['Name'].value = value
74
+ end
75
+
76
+ def to_value
77
+ value = []
78
+
79
+ self.fields.values.each do |field|
80
+ if field.is_a?(Array)
81
+ field.each do |f|
82
+ value[f.index] = f.value
83
+ end
84
+
85
+ next
86
+ end
87
+
88
+ value[field.index] = field.value
89
+ end
90
+
91
+ value
92
+ end
93
+
94
+ def self.from_value(config, value)
95
+ element = Element.new
96
+
97
+ value.each_with_index do |data, index|
98
+ field = config.fields[index]
99
+ type = config.types[index]
100
+
101
+ if config.grouped_field_quantity[field] <= 1
102
+ element.set_field(field, Field.new(type, data, index))
103
+ else
104
+ element.set_multi_field(field, Field.new(type, data, index))
105
+ end
106
+ end
107
+
108
+ element
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,22 @@
1
+ module SSO
2
+ module Elements
3
+ class Field
4
+ attr_accessor :type,
5
+ :value,
6
+ :index
7
+
8
+ def initialize(type, value, index)
9
+ @type = type
10
+ @value = value
11
+ @index = index
12
+ end
13
+
14
+ def compact
15
+ {
16
+ type: @type,
17
+ value: @value
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SSO
4
+ module Elements
5
+ module Fmk
6
+ VERSION = "0.1.1"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "fmk/version"
4
+ require_relative "collection"
5
+
6
+ module SSO
7
+ module Elements
8
+ module Fmk
9
+ class Error < StandardError; end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module SSO
2
+ module Elements
3
+ class Element
4
+ @fields: untyped
5
+
6
+ attr_accessor fields: untyped
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module SSO
2
+ module Elements
3
+ module Fmk
4
+ VERSION: String
5
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module SSO
2
+ module Elements
3
+ class TestFmk
4
+ def test_that_it_has_a_version_number: -> untyped
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sso-elements-fmk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - kuroro
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-07-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: simple sso elements editor for ruby
14
+ email:
15
+ - kuroro-dev@protonmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".idea/.gitignore"
21
+ - ".idea/modules.xml"
22
+ - ".idea/sso-elements-fmk.iml"
23
+ - ".idea/vcs.xml"
24
+ - CODE_OF_CONDUCT.md
25
+ - LICENSE.txt
26
+ - README.md
27
+ - Rakefile
28
+ - lib/sso/elements/collection.rb
29
+ - lib/sso/elements/config.rb
30
+ - lib/sso/elements/configs/PW_1.0.2_v150.cfg
31
+ - lib/sso/elements/configs/PW_1.0.2_v152.cfg
32
+ - lib/sso/elements/element.rb
33
+ - lib/sso/elements/field.rb
34
+ - lib/sso/elements/fmk.rb
35
+ - lib/sso/elements/fmk/version.rb
36
+ - lib/sso/elements/samples/elements.data
37
+ - sig/sso/elements/element.rbs
38
+ - sig/sso/elements/fmk.rbs
39
+ - sig/sso/elements/test_fmk.rbs
40
+ homepage: https://github.com/kuroro7/sso-elements-fmk
41
+ licenses:
42
+ - MIT
43
+ metadata:
44
+ homepage_uri: https://github.com/kuroro7/sso-elements-fmk
45
+ source_code_uri: https://github.com/kuroro7/sso-elements-fmk
46
+ changelog_uri: https://github.com/kuroro7/sso-elements-fmk
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 3.0.0
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubygems_version: 3.5.11
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: sso-elements-fmk
66
+ test_files: []