grammer 0.2.1.edge → 0.2.3.edge

Sign up to get free protection for your applications and to get access to all the features.
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: {}