boring_avatars 0.1.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.
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "svg/element"
4
+ require_relative "svg/value"
5
+
6
+ module BoringAvatars
7
+ VariantResult = Data.define(:size, :content, :defs, :mask_attributes) do
8
+ def initialize(size:, content:, defs: [], mask_attributes: {})
9
+ super(
10
+ size: size,
11
+ content: content.freeze,
12
+ defs: defs.freeze,
13
+ mask_attributes: mask_attributes.freeze
14
+ )
15
+ end
16
+ end
17
+ private_constant :VariantResult
18
+
19
+ module VariantHelpers
20
+ private
21
+
22
+ def element(name, attributes = {}, children = [])
23
+ Svg::Element.new(name: name, attributes: attributes, children: children)
24
+ end
25
+
26
+ def number(value)
27
+ Svg::Value.number(value)
28
+ end
29
+ end
30
+ private_constant :VariantHelpers
31
+ end
32
+
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BoringAvatars
4
+ VERSION = '0.1.0'
5
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "boring_avatars/version"
4
+ require_relative "boring_avatars/input"
5
+ require_relative "boring_avatars/renderer"
6
+
7
+ module BoringAvatars
8
+ class << self
9
+ def generate(
10
+ name,
11
+ variant: :marble,
12
+ colors: DEFAULT_COLORS,
13
+ size: "40px",
14
+ square: false,
15
+ title: false,
16
+ id_prefix: nil,
17
+ attributes: {}
18
+ )
19
+ input = Input.new(
20
+ name: name,
21
+ variant: variant,
22
+ colors: colors,
23
+ size: size,
24
+ square: square,
25
+ title: title,
26
+ id_prefix: id_prefix,
27
+ attributes: attributes
28
+ )
29
+ Renderer.call(input)
30
+ end
31
+ end
32
+
33
+ private_constant :Identifier, :NameHash, :Svg, :Utilities, :Variants
34
+ end
@@ -0,0 +1,70 @@
1
+ # typed: true
2
+
3
+ module BoringAvatars
4
+ Variant = T.type_alias { T.any(String, Symbol) }
5
+ Size = T.type_alias { T.any(Integer, Float, String) }
6
+ AttributeKey = T.type_alias { T.any(String, Symbol) }
7
+ AttributeValue = T.type_alias { T.any(String, Numeric, T::Boolean, NilClass) }
8
+ RailsAttributeValue = T.type_alias do
9
+ T.any(
10
+ AttributeValue,
11
+ T::Array[String],
12
+ T::Hash[AttributeKey, AttributeValue]
13
+ )
14
+ end
15
+
16
+ VERSION = T.let(T.unsafe(nil), String)
17
+
18
+ sig do
19
+ params(
20
+ name: String,
21
+ variant: Variant,
22
+ colors: T::Array[String],
23
+ size: Size,
24
+ square: T::Boolean,
25
+ title: T::Boolean,
26
+ id_prefix: T.nilable(String),
27
+ attributes: T::Hash[AttributeKey, AttributeValue]
28
+ ).returns(String)
29
+ end
30
+ def self.generate(
31
+ name,
32
+ variant: T.unsafe(nil),
33
+ colors: T.unsafe(nil),
34
+ size: T.unsafe(nil),
35
+ square: T.unsafe(nil),
36
+ title: T.unsafe(nil),
37
+ id_prefix: T.unsafe(nil),
38
+ attributes: T.unsafe(nil)
39
+ ); end
40
+
41
+ module Bindings
42
+ module Rails
43
+ module ViewHelper
44
+ sig do
45
+ params(
46
+ name: String,
47
+ variant: Variant,
48
+ colors: T::Array[String],
49
+ size: Size,
50
+ square: T::Boolean,
51
+ title: T::Boolean,
52
+ id_prefix: T.nilable(String),
53
+ svg_attributes: RailsAttributeValue
54
+ ).returns(String)
55
+ end
56
+ def boring_avatar(
57
+ name,
58
+ variant: T.unsafe(nil),
59
+ colors: T.unsafe(nil),
60
+ size: T.unsafe(nil),
61
+ square: T.unsafe(nil),
62
+ title: T.unsafe(nil),
63
+ id_prefix: T.unsafe(nil),
64
+ **svg_attributes
65
+ ); end
66
+ end
67
+ end
68
+ end
69
+ end
70
+
@@ -0,0 +1,44 @@
1
+ module BoringAvatars
2
+ type variant =
3
+ :marble | :beam | :pixel | :sunset | :ring | :bauhaus |
4
+ "marble" | "beam" | "pixel" | "sunset" | "ring" | "bauhaus"
5
+
6
+ type size = Integer | Float | String
7
+ type attribute_key = String | Symbol
8
+ type attribute_value = String | Numeric | bool | nil
9
+ type rails_attribute_value =
10
+ attribute_value |
11
+ Array[String] |
12
+ Hash[attribute_key, attribute_value]
13
+
14
+ VERSION: String
15
+
16
+ def self.generate: (
17
+ String name,
18
+ ?variant: variant,
19
+ ?colors: Array[String],
20
+ ?size: size,
21
+ ?square: bool,
22
+ ?title: bool,
23
+ ?id_prefix: String?,
24
+ ?attributes: Hash[attribute_key, attribute_value]
25
+ ) -> String
26
+
27
+ module Bindings
28
+ module Rails
29
+ module ViewHelper
30
+ def boring_avatar: (
31
+ String name,
32
+ ?variant: variant,
33
+ ?colors: Array[String],
34
+ ?size: size,
35
+ ?square: bool,
36
+ ?title: bool,
37
+ ?id_prefix: String?,
38
+ **rails_attribute_value svg_attributes
39
+ ) -> String
40
+ end
41
+ end
42
+ end
43
+ end
44
+
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: boring_avatars
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - boring_avatars contributors
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: minitest
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '5.20'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '5.20'
26
+ - !ruby/object:Gem::Dependency
27
+ name: nokogiri
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.16'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.16'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rake
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '13.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rbs
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '4.0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '4.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: sorbet
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0.6'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0.6'
82
+ - !ruby/object:Gem::Dependency
83
+ name: steep
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '1.10'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '1.10'
96
+ description: A Ruby port of Boring Avatars with a framework-independent SVG core and
97
+ an opt-in Rails View Helper.
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - LICENSE
103
+ - README.md
104
+ - THIRD_PARTY_NOTICES.md
105
+ - docs/architecture.md
106
+ - docs/core-library.md
107
+ - docs/rails-binding.md
108
+ - docs/testing-and-compatibility.md
109
+ - lib/boring_avatars.rb
110
+ - lib/boring_avatars/bindings/rails.rb
111
+ - lib/boring_avatars/bindings/rails/view_helper.rb
112
+ - lib/boring_avatars/identifier.rb
113
+ - lib/boring_avatars/input.rb
114
+ - lib/boring_avatars/name_hash.rb
115
+ - lib/boring_avatars/renderer.rb
116
+ - lib/boring_avatars/svg/element.rb
117
+ - lib/boring_avatars/svg/serializer.rb
118
+ - lib/boring_avatars/svg/value.rb
119
+ - lib/boring_avatars/utilities.rb
120
+ - lib/boring_avatars/variants.rb
121
+ - lib/boring_avatars/variants/bauhaus.rb
122
+ - lib/boring_avatars/variants/beam.rb
123
+ - lib/boring_avatars/variants/marble.rb
124
+ - lib/boring_avatars/variants/pixel.rb
125
+ - lib/boring_avatars/variants/ring.rb
126
+ - lib/boring_avatars/variants/sunset.rb
127
+ - lib/boring_avatars/version.rb
128
+ - rbi/boring_avatars.rbi
129
+ - sig/boring_avatars.rbs
130
+ homepage: https://github.com/supermomonga/boring-avatars-ruby
131
+ licenses:
132
+ - MIT
133
+ metadata:
134
+ bug_tracker_uri: https://github.com/supermomonga/boring-avatars-ruby/issues
135
+ changelog_uri: https://github.com/supermomonga/boring-avatars-ruby/releases
136
+ rubygems_mfa_required: 'true'
137
+ source_code_uri: https://github.com/supermomonga/boring-avatars-ruby
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '3.3'
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubygems_version: 4.0.16
153
+ specification_version: 4
154
+ summary: Generate deterministic Boring Avatars SVGs in Ruby
155
+ test_files: []