grammer 0.1.1.edge → 0.2.1.edge
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -0
- data/lib/grammer/ig_service.rb +3 -0
- data/lib/grammer/macros.rb +9 -12
- data/lib/grammer/node.rb +16 -2
- data/lib/grammer/version.rb +3 -1
- data/lib/grammer.rb +7 -0
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5859b926ee38745c21ad36c2cac29e3458c6ae62
|
4
|
+
data.tar.gz: 1c84b880ee2e0dfee69e12a464d8e759d588938b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f11bbbfe6131d6ff983cc3b1e4b125ec19fa656e137a24ceb17e69ad7892a586a26b25158c203e249bebd75d4d2cfd8a9a8f3b524c499e694da2e2d637263c6a
|
7
|
+
data.tar.gz: f2a7a2a063bb266788924004a9c3728f234cdd76f476ac9c8831ca28790b645e17714ea19de836db8319d2240d2e9dcb9c6b22901b41d7993b9bf289d304de39
|
data/README.md
ADDED
File without changes
|
data/lib/grammer/ig_service.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Grammer
|
4
|
+
##
|
4
5
|
# Handles Ig Requests
|
5
6
|
class IgService
|
6
7
|
include HTTParty
|
7
8
|
base_uri 'https://www.instagram.com'
|
8
9
|
|
10
|
+
##
|
11
|
+
# Requests Instagram node information with a given username.
|
9
12
|
def node(username)
|
10
13
|
page = self.class.get("/#{username}")
|
11
14
|
json = Nokogiri.parse(page)
|
data/lib/grammer/macros.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Adds class macros to top level module
|
4
3
|
module Grammer
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
4
|
+
##
|
5
|
+
# = Macros
|
9
6
|
# Defines class macros
|
10
7
|
module Macros
|
8
|
+
##
|
9
|
+
# Gets constant value or sets it if it haven't been defined before.
|
11
10
|
def get_or_set_const(module_name)
|
12
11
|
if const_defined?(module_name)
|
13
12
|
const_get(module_name)
|
@@ -16,6 +15,8 @@ module Grammer
|
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
18
|
+
##
|
19
|
+
# Defines methods on singleton modules in order to handle macros
|
19
20
|
def define_module_method(mod, method_name, opts)
|
20
21
|
mod.class_eval do
|
21
22
|
target_attribute = opts[:on]
|
@@ -31,17 +32,13 @@ module Grammer
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
35
|
+
##
|
36
|
+
# Main initializing class macro for the module.
|
37
|
+
# Defines a Node instance on the given name.
|
34
38
|
def grammed_by(method_name, opts = {})
|
35
39
|
mod = get_or_set_const(:"GammerMod#{object_id}")
|
36
40
|
define_module_method(mod, method_name, opts)
|
37
41
|
prepend mod
|
38
42
|
end
|
39
|
-
|
40
|
-
def grammed_by_class_method(*methods)
|
41
|
-
singleton_class.class_eval do
|
42
|
-
include Grammer
|
43
|
-
grammed_by(*methods)
|
44
|
-
end
|
45
|
-
end
|
46
43
|
end
|
47
44
|
end
|
data/lib/grammer/node.rb
CHANGED
@@ -1,19 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Grammer
|
4
|
-
|
4
|
+
##
|
5
|
+
# = Node
|
6
|
+
# Represents Instagram nodes (accounts)
|
5
7
|
class Node
|
6
|
-
|
8
|
+
##
|
9
|
+
# General Instagram hash of data from the node
|
10
|
+
attr_reader :data
|
7
11
|
|
12
|
+
##
|
13
|
+
# Service used for requesting instagram info
|
14
|
+
attr_reader :service
|
15
|
+
|
16
|
+
##
|
17
|
+
# Creates a new instagram node defined by its username.
|
8
18
|
def initialize(username, attr = {})
|
9
19
|
@service = attr[:service] || IgService.new
|
10
20
|
@data = service.node(username)
|
11
21
|
end
|
12
22
|
|
23
|
+
##
|
24
|
+
# Helper for displaying node's biography
|
13
25
|
def biography
|
14
26
|
@data.dig('biography')
|
15
27
|
end
|
16
28
|
|
29
|
+
##
|
30
|
+
# Helper for displaying node's followers count
|
17
31
|
def followers_count
|
18
32
|
@data.dig('edge_followed_by', 'count')
|
19
33
|
end
|
data/lib/grammer/version.rb
CHANGED
data/lib/grammer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
##
|
3
4
|
# Main Module
|
4
5
|
module Grammer
|
5
6
|
require 'httparty'
|
@@ -8,4 +9,10 @@ module Grammer
|
|
8
9
|
require 'grammer/ig_service'
|
9
10
|
require 'grammer/macros'
|
10
11
|
require 'grammer/node'
|
12
|
+
|
13
|
+
##
|
14
|
+
# Extends class macros to main module
|
15
|
+
def self.included(klass)
|
16
|
+
klass.extend(Macros)
|
17
|
+
end
|
11
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grammer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1.edge
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caio Andrade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -64,6 +64,20 @@ dependencies:
|
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '3.6'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rdoc
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '6.1'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '6.1'
|
67
81
|
- !ruby/object:Gem::Dependency
|
68
82
|
name: reek
|
69
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,8 +138,10 @@ description: Provides a simple way to connect objects to the info on a Instagram
|
|
124
138
|
email: caioertai@gmail.com
|
125
139
|
executables: []
|
126
140
|
extensions: []
|
127
|
-
extra_rdoc_files:
|
141
|
+
extra_rdoc_files:
|
142
|
+
- README.md
|
128
143
|
files:
|
144
|
+
- README.md
|
129
145
|
- lib/grammer.rb
|
130
146
|
- lib/grammer/ig_service.rb
|
131
147
|
- lib/grammer/macros.rb
|
@@ -136,7 +152,10 @@ licenses:
|
|
136
152
|
- MIT
|
137
153
|
metadata: {}
|
138
154
|
post_install_message:
|
139
|
-
rdoc_options:
|
155
|
+
rdoc_options:
|
156
|
+
- lib/
|
157
|
+
- "--exclude"
|
158
|
+
- lib/grammer/version.rb
|
140
159
|
require_paths:
|
141
160
|
- lib
|
142
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|