rubyhexagon 2.0.0 → 2.0.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.
@@ -21,20 +21,30 @@ module Rubyhexagon
21
21
  # Class to hold alias information.
22
22
  #
23
23
  # @author Maxine Michalski
24
+ # @api public
24
25
  # @since 2.0.0
25
26
  class Alias
27
+ # Alias ID
28
+ # @example Get alias ID
29
+ # alias.id #=> Integer
26
30
  # @return [Integer] id of alias
27
31
  attr_reader :id
28
32
 
33
+ # Alias name
34
+ # @example Get alias name
35
+ # alias.name #=> String
29
36
  # @return [String] name of alias
30
37
  attr_reader :name
31
38
 
39
+ # Tag this alias is for
40
+ # @example Get aliased tag
41
+ # alias.alias_to #=> E621::Tag
32
42
  # @return [E621::Tag] tag this alias is aliased to
33
43
  attr_reader :alias_to
34
44
 
35
45
  # @author Maxine Michalski
36
46
  #
37
- # Initializer for Alias.
47
+ # Initializer for Alias
38
48
  #
39
49
  # @raise InvalidIDError if alias ID is not valid
40
50
  # @raise ArgumentError hash not valid
@@ -44,7 +54,9 @@ module Rubyhexagon
44
54
  # @option ali [String] :name alias for tag
45
55
  # @option ali [Integer] :alias_id ID of tag to alias
46
56
  # @option ali [TrueClass|FalseClass] :pending statud
47
- #
57
+ # @example Get alias isntance
58
+ # E621::Tag::Alias.new(id: 1, name: 'test', alias_id: 1,
59
+ # pending: false) #=> E621::Tag::Alias instance
48
60
  # @return the object
49
61
  def initialize(ali)
50
62
  raise ArgumentError, "#{ali.class} is not a Hash" unless ali.is_a?(Hash)
@@ -66,8 +78,9 @@ module Rubyhexagon
66
78
 
67
79
  # @author Maxine Michalski
68
80
  #
69
- # Comparison method for Types, to give a more meaningful comparison.
70
- #
81
+ # Comparison method for Types, to give a more meaningful comparison
82
+ # @example Compare two tags, that are unequal
83
+ # Tag.new(id: 1) == Tag.new(id: 2) #=> false
71
84
  # @return [TrueClass, FalseClass]
72
85
  def ==(other)
73
86
  other.is_a?(Alias) && @id == other.id
@@ -75,13 +88,29 @@ module Rubyhexagon
75
88
 
76
89
  # @author Maxine Michalski
77
90
  #
78
- # Check if this alias is pending confirmation.
79
- #
91
+ # Check if this alias is pending confirmation
92
+ # @example Is alias pending?
93
+ # alias.pending? #=> true or false
80
94
  # @return [TrueClass] tag alias is pending
81
95
  # @return [FalseClass] tag alias is not pending
82
96
  def pending?
83
97
  @pending
84
98
  end
99
+
100
+ # @author Maxine Michalski
101
+ #
102
+ # Turn object into a hash representation of itself
103
+ #
104
+ # @example Turn an Alias into a Hash
105
+ # Tag.new(id: 1).to_hash #=> { id: 1 }
106
+ # @return [Hash]
107
+ def to_hash
108
+ hash = {}
109
+ instance_variables.each do |i|
110
+ hash.store(i.to_s.sub(/^@/, '').to_sym, instance_variable_get(i))
111
+ end
112
+ hash
113
+ end
85
114
  end
86
115
  end
87
116
  end
@@ -21,20 +21,30 @@ module Rubyhexagon
21
21
  # Class to hold implication information.
22
22
  #
23
23
  # @author Maxine Michalski
24
+ # @api public
24
25
  # @since 2.0.0
25
26
  class Implication
27
+ # Implication ID
28
+ # @example Get implication ID
29
+ # implication.id #=> Integer
26
30
  # @return [Integer] id of implication
27
31
  attr_reader :id
28
32
 
33
+ # Tag that implies another tag
34
+ # @example Get implying tag
35
+ # implication.tag #=> E621::Tag
29
36
  # @return [E621::Tag] implying tag
30
37
  attr_reader :tag
31
38
 
39
+ # Tag that is implied
40
+ # @example Get implied tag
41
+ # implication.implied #=> E621::Tag
32
42
  # @return [E621::Tag] implied tag
33
43
  attr_reader :implies
34
44
 
35
45
  # @author Maxine Michalski
36
46
  #
37
- # Initializer for Implication.
47
+ # Initializer for Implication
38
48
  #
39
49
  # @raise InvalidIDError if implication ID is not valid
40
50
  # @raise ArgumentError hash not valid
@@ -44,7 +54,9 @@ module Rubyhexagon
44
54
  # @option imply [Integer] :consequent_id implying tag ID
45
55
  # @option imply [Integer] :predicate_id implied tag ID
46
56
  # @option imply [TrueClass|FalseClass] :pending statud
47
- #
57
+ # @example Get new implication instance
58
+ # E621::Tag::Implication.new(id: 1, consequent_id: 1, predicate_id: 2,
59
+ # pending: false) #=> E621::Tag::Implication
48
60
  # @return the object
49
61
  def initialize(imply)
50
62
  unless imply.is_a?(Hash)
@@ -70,8 +82,9 @@ module Rubyhexagon
70
82
 
71
83
  # @author Maxine Michalski
72
84
  #
73
- # Comparison method for Types, to give a more meaningful comparison.
74
- #
85
+ # Comparison method for Types, to give a more meaningful comparison
86
+ # @example Compare two tags, that are unequal
87
+ # Tag.new(id: 1) == Tag.new(id: 2) #=> false
75
88
  # @return [TrueClass, FalseClass]
76
89
  def ==(other)
77
90
  other.is_a?(Implication) && @id == other.id
@@ -79,13 +92,30 @@ module Rubyhexagon
79
92
 
80
93
  # @author Maxine Michalski
81
94
  #
82
- # Check if this implication is pending confirmation.
95
+ # Check if this implication is pending confirmation
83
96
  #
97
+ # @example Is implication pending?
98
+ # implication.pending? #=> true or false
84
99
  # @return [TrueClass] tag implication is pending
85
100
  # @return [FalseClass] tag implication is not pending
86
101
  def pending?
87
102
  @pending
88
103
  end
104
+
105
+ # @author Maxine Michalski
106
+ #
107
+ # Turn object into a hash representation of itself
108
+ #
109
+ # @example Turn a User into a Hash
110
+ # Tag.new(id: 1).to_hash #=> { id: 1 }
111
+ # @return [Hash]
112
+ def to_hash
113
+ hash = {}
114
+ instance_variables.each do |i|
115
+ hash.store(i.to_s.sub(/^@/, '').to_sym, instance_variable_get(i))
116
+ end
117
+ hash
118
+ end
89
119
  end
90
120
  end
91
121
  end
@@ -24,17 +24,17 @@ module Rubyhexagon
24
24
  # @author Maxine Michalski
25
25
  # @since 1.0.0
26
26
  class Type
27
+ # Type ID
27
28
  # @return [Integer] id of type
28
29
  attr_reader :id
29
30
 
31
+ # Type name
30
32
  # @return [String] name of type
31
33
  attr_reader :name
32
34
 
33
35
  # @author Maxine Michalski
34
36
  #
35
- # Initializer for Type.
36
- #
37
- # @raise ArgumentError if type ID is not valid
37
+ # Initializer for Type
38
38
  #
39
39
  # @param type [Hash] type data, fetched from e621
40
40
  # @option type [Integer] :id Type ID (can be one of 0, 1, 3, 4 or 5
@@ -57,7 +57,7 @@ module Rubyhexagon
57
57
 
58
58
  # @author Maxine Michalski
59
59
  #
60
- # Comparison method for Types, to give a more meaningful comparison.
60
+ # Comparison method for Types, to give a more meaningful comparison
61
61
  #
62
62
  # @return [TrueClass, FalseClass]
63
63
  def ==(other)
@@ -67,13 +67,28 @@ module Rubyhexagon
67
67
 
68
68
  # @author Maxine Michalski
69
69
  #
70
- # Check if this type is locked for the tag who has it assigned.
70
+ # Check if this type is locked for the tag who has it assigned
71
71
  #
72
72
  # @return [TrueClass] tag type is locked
73
73
  # @return [FalseClass] tag type is not locked
74
74
  def locked?
75
75
  @locked
76
76
  end
77
+
78
+ # @author Maxine Michalski
79
+ #
80
+ # Turn object into a hash representation of itself
81
+ #
82
+ # @example Turn a User into a Hash
83
+ # Tag.new(id: 1).to_hash #=> { id: 1 }
84
+ # @return [Hash]
85
+ def to_hash
86
+ hash = {}
87
+ instance_variables.each do |i|
88
+ hash.store(i.to_s.sub(/^@/, '').to_sym, instance_variable_get(i))
89
+ end
90
+ hash
91
+ end
77
92
  end
78
93
  end
79
94
  end
@@ -22,30 +22,51 @@ module Rubyhexagon
22
22
  # Class to hold user information for users on e621.
23
23
  #
24
24
  # @author Maxine Michalski
25
+ # @api public
25
26
  # @since 1.0.0
26
27
  class User
28
+ # User ID
29
+ # @example Get ID from user
30
+ # user.id #=> Integer
27
31
  # @return [Integer] id of user
28
32
  attr_reader :id
29
33
 
34
+ # User name
35
+ # @example Get name from user
36
+ # user.name #=> String
30
37
  # @return [String] name of user
31
38
  attr_reader :name
32
39
 
33
- # @return [Level] level of access, this user holds
40
+ # User access level
41
+ # @example Get user access level
42
+ # user.level #=> E621::User::Level
43
+ # @return [E621::User::Level] level of access, this user holds
34
44
  attr_reader :level
35
45
 
46
+ # Time user was created
47
+ # @example Get user creation time
48
+ # user.created_at #=> Time
36
49
  # @return [Time] registration time of this user
37
50
  attr_reader :created_at
38
51
 
52
+ # Avatar post that user chosen
53
+ # @example Get user avatar post
54
+ # user.avatar #=> E621::Post
39
55
  # @return [E621::Post] avatar set by user
40
56
  attr_reader :avatar
41
57
 
58
+ # Artists tags, that belong to user
59
+ # @example Get artist tags
60
+ # user.artist_tags #=> Array<E621::Tag>
42
61
  # @return [Array<E621::Tag>] an array of artist tags, associated with user
43
62
  attr_reader :artist_tags
44
63
 
45
64
  # @author Maxine Michalski
46
65
  #
47
- # Initializer for User.
66
+ # Initializer for User
48
67
  #
68
+ # @example Get a new user instance
69
+ # User.new(:id) #=> E621::User instance
49
70
  # @param user [Hash] user data, fetched from e621
50
71
  #
51
72
  # @return the object
@@ -70,8 +91,24 @@ module Rubyhexagon
70
91
 
71
92
  # @author Maxine Michalski
72
93
  #
73
- # Comparison method for User objects
94
+ # Turn object into a hash representation of itself
74
95
  #
96
+ # @example Turn a User into a Hash
97
+ # User.new(id: 1).to_hash #=> { id: 1 }
98
+ # @return [Hash]
99
+ def to_hash
100
+ hash = {}
101
+ instance_variables.each do |i|
102
+ hash.store(i.to_s.sub(/^@/, '').to_sym, instance_variable_get(i))
103
+ end
104
+ hash
105
+ end
106
+
107
+ # @author Maxine Michalski
108
+ #
109
+ # Comparison method for User objects
110
+ # @example Check two different users
111
+ # User.new(id: 1) == User.new(id: 2) #=> false
75
112
  # @return [TrueClass, FalseClass]
76
113
  def ==(other)
77
114
  other.is_a?(User) && @id == other.id
@@ -24,16 +24,17 @@ module Rubyhexagon
24
24
  # @author Maxine Michalski
25
25
  # @since 1.0.0
26
26
  class Level
27
+ # User level ID
27
28
  # @return [Integer] id of level
28
29
  attr_reader :id
29
30
 
31
+ # User level name
30
32
  # @return [String] name of level
31
33
  attr_reader :name
32
34
 
33
35
  # @author Maxine Michalski
34
36
  #
35
- # Initializer for Level a user can have. This is just to have a more Ruby
36
- # like interface to it.
37
+ # Initializer for Level a user can have
37
38
  #
38
39
  # @param level [Hash] level a user can have.
39
40
  #
@@ -63,7 +64,16 @@ module Rubyhexagon
63
64
 
64
65
  # @author Maxine Michalski
65
66
  #
66
- # Test function for level names.
67
+ # Turn object into a hash representation of itself
68
+ #
69
+ # @return [Hash]
70
+ def to_hash
71
+ { id: @id, name: @name }
72
+ end
73
+
74
+ # @author Maxine Michalski
75
+ #
76
+ # Test function for level names
67
77
  #
68
78
  # @return [TrueClass|FalseClass]
69
79
  def test
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyhexagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxine Michalski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-11 00:00:00.000000000 Z
11
+ date: 2020-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -33,10 +33,10 @@ files:
33
33
  - lib/rubyhexagon.rb
34
34
  - lib/rubyhexagon/api.rb
35
35
  - lib/rubyhexagon/api/artist.rb
36
- - lib/rubyhexagon/api/note.rb
37
36
  - lib/rubyhexagon/api/pool.rb
38
37
  - lib/rubyhexagon/api/post.rb
39
38
  - lib/rubyhexagon/api/post/flag.rb
39
+ - lib/rubyhexagon/api/post/note.rb
40
40
  - lib/rubyhexagon/api/post/tag_item.rb
41
41
  - lib/rubyhexagon/api/tag.rb
42
42
  - lib/rubyhexagon/api/tag/alias.rb
@@ -44,11 +44,11 @@ files:
44
44
  - lib/rubyhexagon/api/user.rb
45
45
  - lib/rubyhexagon/artist.rb
46
46
  - lib/rubyhexagon/error.rb
47
- - lib/rubyhexagon/note.rb
48
47
  - lib/rubyhexagon/pool.rb
49
48
  - lib/rubyhexagon/post.rb
50
49
  - lib/rubyhexagon/post/flag.rb
51
50
  - lib/rubyhexagon/post/image.rb
51
+ - lib/rubyhexagon/post/note.rb
52
52
  - lib/rubyhexagon/post/tag_item.rb
53
53
  - lib/rubyhexagon/search/posts.rb
54
54
  - lib/rubyhexagon/tag.rb
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2014-2018, 2020 Maxine Michalski <maxine@furfind.net>
4
- #
5
- # This file is part of rubyhexagon.
6
- #
7
- # rubyhexagon is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation, either version 3 of the License, or
10
- # (at your option) any later version.
11
- #
12
- # rubyhexagon is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU General Public License for more details.
16
- # You should have received a copy of the GNU General Public License
17
- # along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
18
-
19
- module Rubyhexagon
20
- # A class to interact with the e621 web interface.
21
- #
22
- # @author Maxine Michalski
23
- # @since 2.0.0
24
- class Note
25
- def self.list(post)
26
- unless post.is_a?(Hash) || post.is_a?(E621::Post)
27
- raise ArgumentError, 'A Hash or Post object is required'
28
- end
29
- post.store(:post_id, post.delete(:id)) if post.is_a?(Hash)
30
- post = { post_id: post.id } if post.is_a?(E621::Post)
31
- E621::API.fetch(:note, :index, post).map do |note|
32
- new(note)
33
- end
34
- end
35
-
36
- def self.search(query)
37
- raise ArgumentError, 'A Hash is required' unless query.is_a?(Hash)
38
- E621::API.fetch(:note, :search, query).map do |note|
39
- new(note)
40
- end
41
- end
42
-
43
- def self.history(query)
44
- raise ArgumentError, 'A Hash is required' unless query.is_a?(Hash)
45
- E621::API.fetch(:note, :history, query).map do |note|
46
- new(note)
47
- end
48
- end
49
- end
50
- end
@@ -1,112 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2014-2018, 2020 Maxine Michalski <maxine@furfind.net>
4
- #
5
- # This file is part of rubyhexagon.
6
- #
7
- # rubyhexagon is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation, either version 3 of the License, or
10
- # (at your option) any later version.
11
- #
12
- # rubyhexagon is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU General Public License for more details.
16
- # You should have received a copy of the GNU General Public License
17
- # along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
18
-
19
- module Rubyhexagon
20
- # This class holds note information. Notes are additional information on
21
- # posts.
22
- #
23
- # @author Maxine Michalski
24
- # @since 2.0.0
25
- class Note
26
- # @return [Integer] id for this note
27
- attr_reader :id
28
-
29
- # @return [Time] time of creation
30
- attr_reader :created_at
31
-
32
- # @return [Time] time of last update
33
- attr_reader :updated_at
34
-
35
- # @return [E621::User] user object of creator
36
- attr_reader :creator
37
-
38
- # @return [Integer] position x value
39
- attr_reader :x
40
-
41
- # @return [Integer] position y value
42
- attr_reader :y
43
-
44
- # @return [Array<Integer>] combined position (x, y)
45
- attr_reader :point
46
-
47
- # @return [Integer] width of object
48
- attr_reader :width
49
-
50
- # @return [Integer] height of object
51
- attr_reader :height
52
-
53
- # @return [Array<Integer>] combined rectangular (x, y, width, height)
54
- attr_reader :rect
55
-
56
- # @return [E621::Post] post this note belongs to
57
- attr_reader :post
58
-
59
- # @return [String] text content of note
60
- attr_reader :body
61
-
62
- # @return [Integer] version of this note
63
- attr_reader :version
64
-
65
- # @author Maxine Michalski
66
- #
67
- # Initializer for Note.
68
- #
69
- # @param note [Hash] note information in hash form
70
- #
71
- # @return the object
72
- def initialize(note)
73
- raise ArgumentError, "#{note.class} is not a Hash" unless note.is_a?(Hash)
74
- raise ArgumentError, 'An id is required' if note[:id].nil?
75
- note.each do |k, v|
76
- if %i[id x y width height is_active version body].include?(k)
77
- if k == :id && !(v.is_a?(Integer) && v.positive?)
78
- raise InvalidIDError, "Invalid id: #{v}"
79
- end
80
- instance_variable_set("@#{k}".to_sym, v)
81
- elsif %i[created_at updated_at].include?(k)
82
- instance_variable_set("@#{k}".to_sym, Time.at(v[:s]))
83
- elsif k == :post_id
84
- @post = E621::Post.new(id: v)
85
- elsif k == :creator_id
86
- @creator = E621::User.new(id: v)
87
- end
88
- end
89
- @point = [@x, @y]
90
- @rect = [@x, @y, @width, @height]
91
- end
92
-
93
- # @author Maxine Michalski
94
- #
95
- # Determine if note is active or not.
96
- #
97
- # @return [TrueClass|FalseClass] active state of note
98
- def active?
99
- return false if @is_active.nil?
100
- @is_active
101
- end
102
-
103
- # @author Maxine Michalski
104
- #
105
- # Comparison method for Notes, to give a more meaningful comparison.
106
- #
107
- # @return [TrueClass, FalseClass]
108
- def ==(other)
109
- other.is_a?(Note) && @id == other.id && @version == other.version
110
- end
111
- end
112
- end