grammer 0.2.1.edge → 0.2.3.edge

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5859b926ee38745c21ad36c2cac29e3458c6ae62
4
- data.tar.gz: 1c84b880ee2e0dfee69e12a464d8e759d588938b
3
+ metadata.gz: 3ea42af8ecb0f495ad1f5e83707eed9a7a0c9cae
4
+ data.tar.gz: d86e6a3de1e8a97351c29a713a1b4118b20c20b6
5
5
  SHA512:
6
- metadata.gz: f11bbbfe6131d6ff983cc3b1e4b125ec19fa656e137a24ceb17e69ad7892a586a26b25158c203e249bebd75d4d2cfd8a9a8f3b524c499e694da2e2d637263c6a
7
- data.tar.gz: f2a7a2a063bb266788924004a9c3728f234cdd76f476ac9c8831ca28790b645e17714ea19de836db8319d2240d2e9dcb9c6b22901b41d7993b9bf289d304de39
6
+ metadata.gz: dbcffea118ae4c2ed70f95d36058b58887f9c2452b29485e3ac9da198b4a9107d73cb205900c36db347c8d30d13bd0eb4de52a706d7ce4d3f08dc53795467f56
7
+ data.tar.gz: 4ba1bb4abc6eee42796f1fc4b6dc86b521fe154b6c8b69d2abb114985a030d414456e210374e7319c5a950ed795e4fabb03d26a28b8cd57fc8fbc23a1b560b1e
data/README.md CHANGED
@@ -0,0 +1,43 @@
1
+ [![Gem Version](https://badge.fury.io/rb/grammer.svg)](https://badge.fury.io/rb/grammer)
2
+ [![Maintainability](https://api.codeclimate.com/v1/badges/57a19b2186210fd18d19/maintainability)](https://codeclimate.com/github/caioertai/grammer/maintainability)
3
+ [![Build Status](https://travis-ci.org/caioertai/grammer.svg?branch=master)](https://travis-ci.org/caioertai/grammer)
4
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ Grammer
7
+ ========
8
+
9
+ **Connect objects to Instagram account info.**
10
+
11
+ Key features:
12
+
13
+ * Can be included in objects.
14
+ * On one request:
15
+ * Gets the public info of a provided username (except for followers).
16
+ * Text, link and caption of latest 12 medias.
17
+
18
+ Compatibility:
19
+
20
+ * Work in progress
21
+
22
+
23
+ Incluing Grammer in Objects
24
+ -----------------
25
+
26
+ To include Grammer you model must implement a method that returns an Instagram username:
27
+
28
+ **1.** Your model must provide a method that returns an Instagram username.
29
+
30
+ **2.** In your model, tell grammer where to find the Instagram username and on which method to provide the data:
31
+
32
+ grammed_by :username, on: :ig
33
+
34
+ **3.** This allows you to call `#ig` on your object to retrieve its Instagram info.
35
+
36
+ TODO
37
+ ------------
38
+ * Finish documentation.
39
+ * Command line interface
40
+ * Media objects
41
+ * RDOCs
42
+
43
+ Copyright (c) 2019 Caio Andrade, released under the MIT license.
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Grammer
4
+ ##
5
+ # Build procs for singleton method definitions
6
+ class MacroHandler
7
+ DEFINE = proc do |method_name, options|
8
+ define_method(options[:on]) do
9
+ instance_variable_name = "@#{options[:on]}"
10
+ if instance_variable_defined?(instance_variable_name)
11
+ instance_variable_get(instance_variable_name)
12
+ else
13
+ node = Node.new(send(method_name), service: options[:service])
14
+ instance_variable_set(instance_variable_name, node)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -15,23 +15,6 @@ module Grammer
15
15
  end
16
16
  end
17
17
 
18
- ##
19
- # Defines methods on singleton modules in order to handle macros
20
- def define_module_method(mod, method_name, opts)
21
- mod.class_eval do
22
- target_attribute = opts[:on]
23
- define_method(target_attribute) do
24
- instance_variable_name = "@#{target_attribute}"
25
- if instance_variable_defined?(instance_variable_name)
26
- instance_variable_get(instance_variable_name)
27
- else
28
- node = Node.new(send(method_name), service: opts[:service])
29
- instance_variable_set(instance_variable_name, node)
30
- end
31
- end
32
- end
33
- end
34
-
35
18
  ##
36
19
  # Main initializing class macro for the module.
37
20
  # Defines a Node instance on the given name.
@@ -40,5 +23,11 @@ module Grammer
40
23
  define_module_method(mod, method_name, opts)
41
24
  prepend mod
42
25
  end
26
+
27
+ private
28
+
29
+ def define_module_method(mod, method_name, opts)
30
+ mod.class_exec(method_name, opts, &Grammer::MacroHandler::DEFINE)
31
+ end
43
32
  end
44
33
  end
data/lib/grammer/node.rb CHANGED
@@ -20,6 +20,12 @@ module Grammer
20
20
  @data = service.node(username)
21
21
  end
22
22
 
23
+ ##
24
+ # Helper for displaying node's id
25
+ def id
26
+ @data.dig('id')
27
+ end
28
+
23
29
  ##
24
30
  # Helper for displaying node's biography
25
31
  def biography
@@ -7,7 +7,7 @@ module Grammer
7
7
  module VERSION
8
8
  MAJOR = 0
9
9
  MINOR = 2
10
- PATCH = 1
10
+ PATCH = 3
11
11
  BUILD = 'edge'
12
12
 
13
13
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
data/lib/grammer.rb CHANGED
@@ -8,10 +8,17 @@ module Grammer
8
8
 
9
9
  require 'grammer/ig_service'
10
10
  require 'grammer/macros'
11
+ require 'grammer/macro_handler'
11
12
  require 'grammer/node'
12
13
 
13
14
  ##
14
- # Extends class macros to main module
15
+ # Initializes a node with a given username
16
+ def self.node(username)
17
+ Node.new(username)
18
+ end
19
+
20
+ ##
21
+ # Extends class macros to main module
15
22
  def self.included(klass)
16
23
  klass.extend(Macros)
17
24
  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.2.1.edge
4
+ version: 0.2.3.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-23 00:00:00.000000000 Z
11
+ date: 2019-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -134,7 +134,8 @@ dependencies:
134
134
  - - "~>"
135
135
  - !ruby/object:Gem::Version
136
136
  version: 0.16.1
137
- description: Provides a simple way to connect objects to the info on a Instagram account.
137
+ description: " Provides a simple way to connect objects to the info on a Instagram
138
+ account.'\n"
138
139
  email: caioertai@gmail.com
139
140
  executables: []
140
141
  extensions: []
@@ -144,10 +145,11 @@ files:
144
145
  - README.md
145
146
  - lib/grammer.rb
146
147
  - lib/grammer/ig_service.rb
148
+ - lib/grammer/macro_handler.rb
147
149
  - lib/grammer/macros.rb
148
150
  - lib/grammer/node.rb
149
151
  - lib/grammer/version.rb
150
- homepage: http://rubygems.org/gems/grammer
152
+ homepage: https://github.com/caioertai/grammer
151
153
  licenses:
152
154
  - MIT
153
155
  metadata: {}