pagehook-rails 0.0.12 → 0.1.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 +4 -4
- data/README.md +8 -11
- data/lib/generators/pagehook/install/install_generator.rb +17 -4
- data/lib/generators/pagehook/install/templates/global.js +4 -0
- data/lib/generators/pagehook/install/templates/global.ts +4 -0
- data/lib/generators/pagehook/install/templates/pagehook_rails.js +12 -7
- data/lib/generators/pagehook/install/templates/pagehook_rails.ts +22 -0
- data/lib/generators/pagehook/pagehook_generator.rb +4 -4
- data/lib/generators/pagehook/templates/hook.js.erb +2 -2
- data/lib/generators/pagehook/templates/hook.ts.erb +4 -0
- data/lib/pagehook-rails/engine.rb +1 -1
- data/lib/pagehook-rails/version.rb +1 -1
- metadata +45 -17
- data/app/assets/javascripts/pagehook_rails/pagehook.js +0 -82
- data/lib/generators/pagehook/install/templates/pagehook_rails.coffee +0 -7
- data/lib/generators/pagehook/templates/hook.coffee.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1233e455124a9255cf37b940682d2df66e7eafc0e76ebd683f4eeebb0ef8623
|
4
|
+
data.tar.gz: 7ae8e6be99a95183bbb6879accb037f898f8eb0aa9614283c430a30144d6fedc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85584053052956a9daea5450062c42d6f4086f6919411a648c0aa9db484e6d56d671f7e268b2221fc5ed23ad4eef03bd07f51053ae79ec6dcd30953e7ba804c5
|
7
|
+
data.tar.gz: ac5cc2da3288405507820c6825c14675a771b40ffd4d9d2e8925252166bc9fef26f5e2efeb4ab18951bc8c078b13be25993d636f0336e0c1df28d6e02f8a9878
|
data/README.md
CHANGED
@@ -15,9 +15,7 @@ And then execute:
|
|
15
15
|
|
16
16
|
$ bundle
|
17
17
|
$ rails g pagehook:install
|
18
|
-
# Or `rails g pagehook:install --lang
|
19
|
-
|
20
|
-
If you use turbolinks, you should load `pagehook_rails` after `turbolinks` in `app/assets/javascripts/application.js`.
|
18
|
+
# Or `rails g pagehook:install --lang js` if you dont use TypeScript
|
21
19
|
|
22
20
|
|
23
21
|
View helper
|
@@ -25,7 +23,7 @@ View helper
|
|
25
23
|
|
26
24
|
`pagehook` view helper method generates "trigger element".
|
27
25
|
|
28
|
-
<%= pagehook("articles/index", id: 123) %>
|
26
|
+
<%= pagehook("articles/index", {id: 123}) %>
|
29
27
|
|
30
28
|
This generates following HTML.
|
31
29
|
|
@@ -38,15 +36,14 @@ Generator
|
|
38
36
|
`rails g pagehook path/to/view` generates hook definition template.
|
39
37
|
|
40
38
|
$ rails g pagehook articles/index
|
41
|
-
create app/
|
42
|
-
$ cat app/
|
43
|
-
|
44
|
-
Pagehook.register("articles/index",
|
45
|
-
|
39
|
+
create app/javascript/pagehook/articles/index.ts
|
40
|
+
$ cat app/javascript/pagehook/articles/index.ts
|
41
|
+
import Pagehook from "pagehook"
|
42
|
+
Pagehook.register("articles/index", (data: any) => {
|
43
|
+
console.log(data);
|
46
44
|
});
|
47
45
|
|
48
|
-
|
49
|
-
You can also do `rails g pagehook path/to/view --lang coffee` to generate .coffee rather than .js.
|
46
|
+
You can also do `rails g pagehook path/to/view --lang js` to generate .js rather than .ts.
|
50
47
|
|
51
48
|
|
52
49
|
Contributing
|
@@ -1,17 +1,30 @@
|
|
1
1
|
module Pagehook
|
2
2
|
class InstallGenerator < Rails::Generators::Base
|
3
3
|
source_root File.expand_path("../templates", __FILE__)
|
4
|
-
class_option :lang, type: :string, default: "
|
4
|
+
class_option :lang, type: :string, default: "ts"
|
5
|
+
|
6
|
+
def install
|
7
|
+
run "yarn add pagehook@^0.1.4"
|
8
|
+
end
|
5
9
|
|
6
10
|
def copy_loader
|
7
11
|
case options[:lang].downcase
|
8
|
-
when "coffee", "coffeescript"
|
9
|
-
copy_file "pagehook_rails.coffee", "app/assets/javascripts/pagehook_rails.coffee"
|
10
12
|
when "js", "javascript"
|
11
|
-
copy_file "pagehook_rails.js", "app/
|
13
|
+
copy_file "pagehook_rails.js", "app/javascript/pagehook_rails.js"
|
14
|
+
copy_file "global.js", "app/javascript/pagehook/global.js"
|
15
|
+
when "ts", "typescript"
|
16
|
+
copy_file "pagehook_rails.ts", "app/javascript/pagehook_rails.ts"
|
17
|
+
copy_file "global.ts", "app/javascript/pagehook/global.ts"
|
12
18
|
else
|
13
19
|
raise "Unknown language: #{lang}"
|
14
20
|
end
|
21
|
+
|
22
|
+
case
|
23
|
+
when File.exists?("app/javascript/packs/application.ts")
|
24
|
+
append_file_with_newline "app/javascript/packs/application.ts", %(\nimport "../pagehook_rails")
|
25
|
+
when File.exists?("app/javascript/packs/application.js")
|
26
|
+
append_file_with_newline "app/javascript/packs/application.js", %(\nimport "../pagehook_rails")
|
27
|
+
end
|
15
28
|
end
|
16
29
|
end
|
17
30
|
end
|
@@ -1,8 +1,13 @@
|
|
1
|
-
//= require pagehook_rails/pagehook
|
2
1
|
// Register event handler
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
import Pagehook from "pagehook";
|
3
|
+
document.addEventListener("DOMContentLoaded", Pagehook.handler);
|
4
|
+
|
5
|
+
const requireHook = require.context(
|
6
|
+
"./pagehook",
|
7
|
+
true, // Whether or not to look in subfolders
|
8
|
+
/[a-z0-9_]+\.(js|ts)$/u,
|
9
|
+
);
|
10
|
+
|
11
|
+
requireHook.keys().forEach((fileName) => {
|
12
|
+
requireHook(fileName);
|
13
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Register event handler
|
2
|
+
import Pagehook from "pagehook";
|
3
|
+
document.addEventListener("DOMContentLoaded", Pagehook.handler);
|
4
|
+
|
5
|
+
// Require all hooks in ./pagehook
|
6
|
+
interface RequireHook {
|
7
|
+
(fileName: string): object | {default: object};
|
8
|
+
keys: () => string[];
|
9
|
+
}
|
10
|
+
interface NodeRequireWithContext extends NodeRequire {
|
11
|
+
context: (a: string, b: boolean, c: RegExp) => RequireHook;
|
12
|
+
}
|
13
|
+
|
14
|
+
const requireHook = (require as NodeRequireWithContext).context(
|
15
|
+
"./pagehook",
|
16
|
+
true, // Whether or not to look in subfolders
|
17
|
+
/[a-z0-9_]+\.(js|ts)$/u,
|
18
|
+
);
|
19
|
+
|
20
|
+
requireHook.keys().forEach((fileName: string) => {
|
21
|
+
requireHook(fileName);
|
22
|
+
});
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class PagehookGenerator < Rails::Generators::NamedBase
|
2
2
|
source_root File.expand_path("../templates", __FILE__)
|
3
|
-
class_option :lang, type: :string, default: "
|
3
|
+
class_option :lang, type: :string, default: "ts"
|
4
4
|
|
5
5
|
def generate_script
|
6
6
|
case options[:lang].downcase
|
7
|
-
when "coffee", "coffeescript"
|
8
|
-
template "hook.coffee.erb", "app/assets/javascripts/pagehook/#{view_path}.coffee"
|
9
7
|
when "js", "javascript"
|
10
|
-
template "hook.js.erb", "app/
|
8
|
+
template "hook.js.erb", "app/javascript/pagehook/#{view_path}.js"
|
9
|
+
when "ts", "typescript"
|
10
|
+
template "hook.ts.erb", "app/javascript/pagehook/#{view_path}.ts"
|
11
11
|
else
|
12
12
|
raise "Unknown language: #{lang}"
|
13
13
|
end
|
@@ -3,7 +3,7 @@ module PagehookRails
|
|
3
3
|
isolate_namespace PagehookRails
|
4
4
|
|
5
5
|
initializer "pagehook-rails.action_controller" do |app|
|
6
|
-
|
6
|
+
Rails.application.reloader.to_prepare do
|
7
7
|
ActionController::Base.helper PagehookRails::PagehookHelper
|
8
8
|
end
|
9
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pagehook-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- labocho
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: loofah
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,18 +42,32 @@ dependencies:
|
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.10.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.10.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: bootsnap
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: listen
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.4'
|
83
111
|
description: Rails plugin integrates Pagehook (https://github.com/labocho/pagehook)
|
84
112
|
email:
|
85
113
|
- labocho@penguinlab.jp
|
@@ -90,21 +118,22 @@ files:
|
|
90
118
|
- MIT-LICENSE
|
91
119
|
- README.md
|
92
120
|
- Rakefile
|
93
|
-
- app/assets/javascripts/pagehook_rails/pagehook.js
|
94
121
|
- app/helpers/pagehook_rails/pagehook_helper.rb
|
95
122
|
- lib/generators/pagehook/install/install_generator.rb
|
96
|
-
- lib/generators/pagehook/install/templates/
|
123
|
+
- lib/generators/pagehook/install/templates/global.js
|
124
|
+
- lib/generators/pagehook/install/templates/global.ts
|
97
125
|
- lib/generators/pagehook/install/templates/pagehook_rails.js
|
126
|
+
- lib/generators/pagehook/install/templates/pagehook_rails.ts
|
98
127
|
- lib/generators/pagehook/pagehook_generator.rb
|
99
|
-
- lib/generators/pagehook/templates/hook.coffee.erb
|
100
128
|
- lib/generators/pagehook/templates/hook.js.erb
|
129
|
+
- lib/generators/pagehook/templates/hook.ts.erb
|
101
130
|
- lib/pagehook-rails.rb
|
102
131
|
- lib/pagehook-rails/engine.rb
|
103
132
|
- lib/pagehook-rails/version.rb
|
104
133
|
homepage: https://github.com/labocho/pagehook-rails
|
105
134
|
licenses: []
|
106
135
|
metadata: {}
|
107
|
-
post_install_message:
|
136
|
+
post_install_message:
|
108
137
|
rdoc_options: []
|
109
138
|
require_paths:
|
110
139
|
- lib
|
@@ -119,9 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
148
|
- !ruby/object:Gem::Version
|
120
149
|
version: '0'
|
121
150
|
requirements: []
|
122
|
-
|
123
|
-
|
124
|
-
signing_key:
|
151
|
+
rubygems_version: 3.3.3
|
152
|
+
signing_key:
|
125
153
|
specification_version: 4
|
126
154
|
summary: Rails plugin integrates Pagehook (https://github.com/labocho/pagehook)
|
127
155
|
test_files: []
|
@@ -1,82 +0,0 @@
|
|
1
|
-
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o;"undefined"!=typeof window?o=window:"undefined"!=typeof global?o=global:"undefined"!=typeof self&&(o=self),o.Pagehook=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
2
|
-
"use strict";
|
3
|
-
|
4
|
-
// constructor
|
5
|
-
var Pagehook = function() {
|
6
|
-
this.definitions = {};
|
7
|
-
this.handler = this.handlerUnbound.bind(this);
|
8
|
-
};
|
9
|
-
|
10
|
-
// constant
|
11
|
-
Pagehook.GLOBAL_HOOK_NAME = "@global";
|
12
|
-
Pagehook.ATTRIBUTE_NAME = "data-pagehook";
|
13
|
-
|
14
|
-
// static methods
|
15
|
-
Pagehook.register = function(name_or_map, func) {
|
16
|
-
this.instance.register(name_or_map, func);
|
17
|
-
};
|
18
|
-
|
19
|
-
Pagehook.dispatch = function(name, arg) {
|
20
|
-
this.instance.dispatch(name, arg);
|
21
|
-
};
|
22
|
-
|
23
|
-
// Pagehook.register "name", (arg)-> ...
|
24
|
-
// // or
|
25
|
-
// Pagehoook.register
|
26
|
-
// name: (arg)->
|
27
|
-
Pagehook.prototype.register = function(name_or_map, func) {
|
28
|
-
var name;
|
29
|
-
|
30
|
-
if (typeof(name_or_map) === "string") {
|
31
|
-
if (!this.definitions[name_or_map]) {
|
32
|
-
this.definitions[name_or_map] = [];
|
33
|
-
}
|
34
|
-
this.definitions[name_or_map].push(func);
|
35
|
-
} else {
|
36
|
-
for (name in name_or_map) {
|
37
|
-
this.register(name, name_or_map[name]);
|
38
|
-
}
|
39
|
-
}
|
40
|
-
};
|
41
|
-
|
42
|
-
// Pagehook.dispatch("name", {foo: 1, bar: 2})
|
43
|
-
Pagehook.prototype.dispatch = function(name, arg) {
|
44
|
-
if (this.definitions[name]) {
|
45
|
-
this.definitions[name].forEach(function(func) {
|
46
|
-
func(arg);
|
47
|
-
});
|
48
|
-
} else {
|
49
|
-
if (name !== Pagehook.GLOBAL_HOOK_NAME) {
|
50
|
-
console.log("Pagehook for " + name + " is undefined");
|
51
|
-
}
|
52
|
-
}
|
53
|
-
};
|
54
|
-
|
55
|
-
// Event handler for DOMContentLoaded or turbolinks:load (turbolinks)
|
56
|
-
// Use `handler` property instead of this
|
57
|
-
Pagehook.prototype.handlerUnbound = function() {
|
58
|
-
var elements, i, e, name, arg;
|
59
|
-
|
60
|
-
this.dispatch(Pagehook.GLOBAL_HOOK_NAME);
|
61
|
-
|
62
|
-
elements = document.querySelectorAll("[" + Pagehook.ATTRIBUTE_NAME + "]");
|
63
|
-
for (i = 0; i < elements.length; i++) {
|
64
|
-
e = elements[i];
|
65
|
-
name = e.getAttribute(Pagehook.ATTRIBUTE_NAME);
|
66
|
-
arg = this.isBlank(e.textContent) ? undefined : JSON.parse(e.textContent);
|
67
|
-
this.dispatch(name, arg);
|
68
|
-
}
|
69
|
-
};
|
70
|
-
|
71
|
-
Pagehook.prototype.isBlank = function(string) {
|
72
|
-
return !!(string.match(/^\s*$/));
|
73
|
-
};
|
74
|
-
|
75
|
-
// instanciate singleton object
|
76
|
-
Pagehook.instance = new Pagehook();
|
77
|
-
Pagehook.handler = Pagehook.instance.handler;
|
78
|
-
|
79
|
-
module.exports = Pagehook;
|
80
|
-
|
81
|
-
},{}]},{},[1])(1)
|
82
|
-
});
|
@@ -1,7 +0,0 @@
|
|
1
|
-
#= require pagehook_rails/pagehook
|
2
|
-
# Register event handler
|
3
|
-
if typeof(Turbolinks) == "undefined"
|
4
|
-
document.addEventListener("DOMContentLoaded", Pagehook.handler)
|
5
|
-
else
|
6
|
-
document.addEventListener("turbolinks:load", Pagehook.handler)
|
7
|
-
document.addEventListener("page:load", Pagehook.handler)
|