ask_awesomely 0.1.7 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57f17215b78dd2e3143b8491973c5f92886e51eb
4
- data.tar.gz: 896f7286ff272ff2a6ed5065a467d0506c8c3c71
3
+ metadata.gz: 9b1872c38eca936853d8a4c749c86825c32e67b3
4
+ data.tar.gz: 21e73d3a4c42a1a1b5046c353c893a453c2179cf
5
5
  SHA512:
6
- metadata.gz: 41d6794bb832347d86d7d8a6052e928999fc2f640cfa5aaa59da04806374386b2a0128ee2533f15967c1a2ce653fc75e65325d545fa72abb89db8804240bdc4f
7
- data.tar.gz: fbaf9fb504249c1f1d1e6f1b87a1dc39f9a41c47003c3967c2d953b38d3f0b5951ec26bed5d908b78b2b8d39e4e009b93315eb59c7e06c8d394d2c0f3c2116ba
6
+ metadata.gz: a71c7706f7c3570b7967ab4b12da84b5ed782f70cc1703b7a805b52c4c1f2c40ef1ea97082db984a35c0b61afec34432b6a9f65bc7a8d7864fc638882cdda631
7
+ data.tar.gz: 7677f681ef80f096dde29bcac94aca517c06144e6b5002838296c729f92f638b05c6f319a6ca11646ec0a3f8bc5b899110d0641a5d4a2769e39b13e543922cd9
data/README.md CHANGED
@@ -352,6 +352,27 @@ field :legal
352
352
  end
353
353
  ```
354
354
 
355
+ ## Custom Designs
356
+
357
+ You can customise the appearance of your Typeform by adding a design. While you don't have as much control as you would through the builder on Typeform.com, you are still able to play with colours and fonts. The documentation contains a list of [possible font selections](http://docs.typeform.io/docs/designs).
358
+
359
+ ```ruby
360
+ design do
361
+ question_color "#FF0099"
362
+ button_color "#ABCDEF"
363
+ answer_color "#4AF6E9"
364
+ background_color "#000000"
365
+
366
+ font "Vollkorn"
367
+ end
368
+ ```
369
+
370
+ If you already have a design and would like to re-use it, you can use an ID from the created form.
371
+
372
+ ```ruby
373
+ design 12345
374
+ ```
375
+
355
376
  ## Logic Jumps
356
377
 
357
378
  A logic jump allows you to change the next questions you ask based on the answer of a previous question. For example, you could have a `yes_no` field that shows one question if the answer is 'yes', and a different question if the answer is 'no'. At the time of writing this is the only supported behaviour for logic jumps.
@@ -6,7 +6,8 @@ module AskAwesomely
6
6
  ENDPOINTS = {
7
7
  root: "/",
8
8
  create_typeform: "/forms",
9
- create_picture: "/images"
9
+ create_picture: "/images",
10
+ create_design: "/designs"
10
11
  }
11
12
 
12
13
  def initialize
@@ -45,6 +46,16 @@ module AskAwesomely
45
46
  JSON.parse(response.body)
46
47
  end
47
48
 
49
+ def submit_design(design)
50
+ response = request.post(
51
+ url_for(:create_design),
52
+ headers: headers,
53
+ body: design.to_json
54
+ )
55
+
56
+ JSON.parse(response.body)
57
+ end
58
+
48
59
  private
49
60
 
50
61
  def request
@@ -0,0 +1,83 @@
1
+ module AskAwesomely
2
+ class Design
3
+
4
+ VALID_FONTS = %w[
5
+ Acme
6
+ Arial
7
+ Arvo
8
+ Bangers
9
+ Cabin
10
+ Cabin Condensed
11
+ Courier
12
+ Crete Round
13
+ Dancing Script
14
+ Exo
15
+ Georgia
16
+ Handlee
17
+ Karla
18
+ Lato
19
+ Lobster
20
+ Lora
21
+ McLaren
22
+ Monsterrat
23
+ Nixie
24
+ Old Standard TT
25
+ Open Sans
26
+ Oswald
27
+ Playfair
28
+ Quicksand
29
+ Raleway
30
+ Signika
31
+ Sniglet
32
+ Source Sans Pro
33
+ Vollkorn
34
+ ]
35
+
36
+ def initialize(&block)
37
+ @state = OpenStruct.new(colors: {})
38
+ instance_eval(&block)
39
+ end
40
+
41
+ def id
42
+ @id ||= upload_to_typeform["id"]
43
+ end
44
+
45
+ def background_color(color)
46
+ @state.colors[:background] = color
47
+ end
48
+
49
+ def question_color(color)
50
+ @state.colors[:question] = color
51
+ end
52
+
53
+ def answer_color(color)
54
+ @state.colors[:answer] = color
55
+ end
56
+
57
+ def button_color(color)
58
+ @state.colors[:button] = color
59
+ end
60
+
61
+ def font(font)
62
+ unless VALID_FONTS.include?(font)
63
+ raise AskAwesomely::InvalidFontError, "#{font} is not supported; you must use one of the following fonts: #{VALID_FONTS.join(', ')}"
64
+ end
65
+
66
+ @state.font = font
67
+ end
68
+
69
+ def to_json(*)
70
+ {
71
+ colors: @state.colors,
72
+ font: @state.font
73
+ }.to_json
74
+ end
75
+
76
+ private
77
+
78
+ def upload_to_typeform
79
+ ApiClient.new.submit_design(self)
80
+ end
81
+
82
+ end
83
+ end
@@ -41,11 +41,15 @@ module AskAwesomely
41
41
  _state.jumps << LogicJump.new(conditions)
42
42
  end
43
43
 
44
+ def design(id = nil, &block)
45
+ _state.design_id = id || ->(_) { Design.new(&block).id }
46
+ end
47
+
44
48
  def send_responses_to(url)
45
49
  unless url =~ /\A#{URI::regexp(['http', 'https'])}\z/
46
50
  raise AskAwesomely::InvalidUrlError, "you must use a valid URL for webhooks, e.g https://example.com/webhook"
47
51
  end
48
-
52
+
49
53
  _state.webhook_submit_url = url
50
54
  end
51
55
  end
@@ -58,7 +62,7 @@ module AskAwesomely
58
62
  end
59
63
 
60
64
  private
61
-
65
+
62
66
  def initialize(context = nil)
63
67
  @context = context
64
68
  @state = self.class._state
@@ -68,7 +72,7 @@ module AskAwesomely
68
72
  return if state.webhook_submit_url
69
73
  AskAwesomely.configuration.logger.warn(<<-STR.gsub(/^\s*/, ''))
70
74
  Your Typeform has no webhook URL! The responses to this form **will NOT** be saved!
71
- To set one, add `send_responses_to "https://example.com/webhook"` to #{self.class.name}
75
+ To set one, add `send_responses_to "https://example.com/webhook"` to #{self.class.name}
72
76
  STR
73
77
  end
74
78
  end
@@ -4,7 +4,7 @@ module AskAwesomely
4
4
  attr_reader :file_or_url, :public_url, :type, :typeform_id
5
5
 
6
6
  DEFAULT_TYPE = :choice
7
-
7
+
8
8
  PICTURE_TYPES = [
9
9
  :choice
10
10
  ]
@@ -1,3 +1,3 @@
1
1
  module AskAwesomely
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/ask_awesomely.rb CHANGED
@@ -17,6 +17,7 @@ require "ask_awesomely/api_client"
17
17
  require "ask_awesomely/typeform"
18
18
  require "ask_awesomely/embeddable"
19
19
  require "ask_awesomely/logic_jump"
20
+ require "ask_awesomely/design"
20
21
 
21
22
  module AskAwesomely
22
23
 
@@ -24,6 +25,7 @@ module AskAwesomely
24
25
  FieldTypeError = Class.new(ArgumentError)
25
26
  EmbedTypeError = Class.new(ArgumentError)
26
27
  InvalidUrlError = Class.new(TypeError)
28
+ InvalidFontError = Class.new(ArgumentError)
27
29
 
28
30
  def self.configuration
29
31
  @configuration ||= Configuration.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ask_awesomely
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Machin
@@ -115,7 +115,6 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - ".codeclimate.yml"
119
118
  - ".gitignore"
120
119
  - ".rspec"
121
120
  - ".ruby-version"
@@ -131,6 +130,7 @@ files:
131
130
  - lib/ask_awesomely/api_client.rb
132
131
  - lib/ask_awesomely/choice.rb
133
132
  - lib/ask_awesomely/configuration.rb
133
+ - lib/ask_awesomely/design.rb
134
134
  - lib/ask_awesomely/dsl.rb
135
135
  - lib/ask_awesomely/embeddable.rb
136
136
  - lib/ask_awesomely/embeds/drawer.erb
data/.codeclimate.yml DELETED
@@ -1,6 +0,0 @@
1
- engines:
2
- rubocop:
3
- enabled: true
4
- checks:
5
- Rubocop/Style/StringLiterals:
6
- enabled: false