mustache_render 0.0.15 → 0.0.20
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.
- data/lib/generators/mustache_render/install/templates/config/initializers/mustache_render.rb +1 -20
- data/lib/generators/mustache_render/install_generator.rb +2 -14
- data/lib/mustache_render.rb +0 -20
- data/lib/mustache_render/config.rb +0 -83
- data/lib/mustache_render/core_ext/base_controller_ext.rb +1 -2
- data/lib/mustache_render/mustache.rb +0 -57
- data/lib/mustache_render/mustache/data.rb +1 -13
- data/lib/mustache_render/populator_base.rb +2 -3
- data/lib/mustache_render/version.rb +1 -1
- data/spec/lib/mustache/file_render_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -8
- metadata +1 -59
- data/lib/generators/mustache_render/install/templates/active_record/migration.rb +0 -65
- data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_folder.rb +0 -6
- data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_manager.rb +0 -6
- data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_template.rb +0 -6
- data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_template_version.rb +0 -6
- data/lib/mustache_render/controllers/mustache_render/manage/base_controller.rb +0 -42
- data/lib/mustache_render/controllers/mustache_render/manage/folders_controller.rb +0 -47
- data/lib/mustache_render/controllers/mustache_render/manage/template_versions_controller.rb +0 -71
- data/lib/mustache_render/controllers/mustache_render/manage/templates_controller.rb +0 -61
- data/lib/mustache_render/core_ext/action_view_handler.rb +0 -18
- data/lib/mustache_render/helpers/mustache_render/manage/base_helper.rb +0 -29
- data/lib/mustache_render/models/mustache_render_folder_mixin.rb +0 -128
- data/lib/mustache_render/models/mustache_render_manager_mixin.rb +0 -23
- data/lib/mustache_render/models/mustache_render_template_mixin.rb +0 -104
- data/lib/mustache_render/models/mustache_render_template_version_mixin.rb +0 -46
- data/lib/mustache_render/resources/jquery.js +0 -9473
- data/lib/mustache_render/resources/jquery_ujs.js +0 -429
- data/lib/mustache_render/views/layouts/mustache_render/manage/base.html.erb +0 -22
- data/lib/mustache_render/views/mustache_render/manage/folders/_edit_2.html.erb +0 -7
- data/lib/mustache_render/views/mustache_render/manage/folders/_edit_3.html.erb +0 -6
- data/lib/mustache_render/views/mustache_render/manage/folders/_form.html.erb +0 -31
- data/lib/mustache_render/views/mustache_render/manage/folders/_new_2.html.erb +0 -3
- data/lib/mustache_render/views/mustache_render/manage/folders/_new_3.html.erb +0 -3
- data/lib/mustache_render/views/mustache_render/manage/folders/edit.html.erb +0 -11
- data/lib/mustache_render/views/mustache_render/manage/folders/index.html.erb +0 -9
- data/lib/mustache_render/views/mustache_render/manage/folders/new.html.erb +0 -10
- data/lib/mustache_render/views/mustache_render/manage/folders/show.html.erb +0 -44
- data/lib/mustache_render/views/mustache_render/manage/template_versions/_edit_2.html.erb +0 -10
- data/lib/mustache_render/views/mustache_render/manage/template_versions/_edit_3.html.erb +0 -10
- data/lib/mustache_render/views/mustache_render/manage/template_versions/_form.html.erb +0 -43
- data/lib/mustache_render/views/mustache_render/manage/template_versions/_list.html.erb +0 -41
- data/lib/mustache_render/views/mustache_render/manage/template_versions/edit.html.erb +0 -22
- data/lib/mustache_render/views/mustache_render/manage/template_versions/index.html.erb +0 -20
- data/lib/mustache_render/views/mustache_render/manage/template_versions/show.html.erb +0 -53
- data/lib/mustache_render/views/mustache_render/manage/templates/_edit_2.html.erb +0 -10
- data/lib/mustache_render/views/mustache_render/manage/templates/_edit_3.html.erb +0 -9
- data/lib/mustache_render/views/mustache_render/manage/templates/_form.html.erb +0 -43
- data/lib/mustache_render/views/mustache_render/manage/templates/_new_2.html.erb +0 -9
- data/lib/mustache_render/views/mustache_render/manage/templates/_new_3.html.erb +0 -9
- data/lib/mustache_render/views/mustache_render/manage/templates/edit.html.erb +0 -13
- data/lib/mustache_render/views/mustache_render/manage/templates/new.html.erb +0 -10
- data/lib/mustache_render/views/mustache_render/manage/templates/show.html.erb +0 -52
@@ -1,65 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class MustacheRenderMigration < ActiveRecord::Migration
|
3
|
-
def self.up
|
4
|
-
create_table :mustache_render_folders, :options => 'DEFAULT CHARSET=utf8' do |t|
|
5
|
-
t.string :name, :default => '' # 文件夹的名称
|
6
|
-
|
7
|
-
t.string :full_path, :default => '' # 全路径
|
8
|
-
|
9
|
-
###### for nested_ful #####################
|
10
|
-
t.integer :parent_id # 父节点的id
|
11
|
-
t.integer :left_id
|
12
|
-
t.integer :right_id
|
13
|
-
t.integer :depth # 深度
|
14
|
-
t.integer :children_count, :default => 0
|
15
|
-
###########################################
|
16
|
-
|
17
|
-
t.text :note # 备注
|
18
|
-
|
19
|
-
t.timestamps
|
20
|
-
end
|
21
|
-
|
22
|
-
create_table :mustache_render_templates, :options => 'DEFAULT CHARSET=utf8' do |t|
|
23
|
-
t.integer :last_user_id # 最后一个修改模板的用户
|
24
|
-
t.integer :create_user_id # 创建者的用户id
|
25
|
-
t.integer :folder_id # 文件夹的ID
|
26
|
-
t.string :name # 模板的名称
|
27
|
-
t.text :content # 代码
|
28
|
-
|
29
|
-
t.text :note # 备注
|
30
|
-
t.timestamps
|
31
|
-
end
|
32
|
-
|
33
|
-
create_table :mustache_render_template_versions, :options => 'DEFAULT CHARSET=utf8' do |t|
|
34
|
-
t.integer :template_id # 模板的id
|
35
|
-
t.integer :last_user_id # 最后一个修改模板的用户
|
36
|
-
t.integer :create_user_id # 创建者的用户id
|
37
|
-
t.integer :folder_id # 文件夹的ID
|
38
|
-
t.string :name # 模板的名称
|
39
|
-
t.text :content # 代码
|
40
|
-
t.string :full_path
|
41
|
-
t.string :change_log # 修改日志
|
42
|
-
|
43
|
-
t.text :note # 备注
|
44
|
-
t.timestamps
|
45
|
-
end
|
46
|
-
|
47
|
-
create_table :mustache_render_managers, :options => 'DEFAULT CHARSET=utf8' do |t|
|
48
|
-
t.integer :user_id
|
49
|
-
|
50
|
-
t.integer :admin_able # 是否是管理权限
|
51
|
-
t.integer :edit_able # 是否可以编辑
|
52
|
-
|
53
|
-
t.timestamps
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.down
|
59
|
-
drop_table :mustache_render_folders
|
60
|
-
drop_table :mustache_render_template_versions
|
61
|
-
drop_table :mustache_render_templates
|
62
|
-
drop_table :mustache_render_managers
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Manage
|
3
|
-
class BaseController < ::ApplicationController
|
4
|
-
helper BaseHelper
|
5
|
-
|
6
|
-
before_filter :require_user_is_manager!
|
7
|
-
before_filter :set_mustache_manage_view_path
|
8
|
-
|
9
|
-
layout 'mustache_render/manage/base'
|
10
|
-
|
11
|
-
protected
|
12
|
-
|
13
|
-
#
|
14
|
-
# 设置mustache的管理器的view path
|
15
|
-
#
|
16
|
-
def set_mustache_manage_view_path
|
17
|
-
prepend_view_path "#{::MustacheRender.config.lib_base_path}/views"
|
18
|
-
end
|
19
|
-
|
20
|
-
def require_user_is_manager!
|
21
|
-
self.mustache_render_manager = current_user
|
22
|
-
|
23
|
-
if ::MustacheRender.config.manage_center_need_login?
|
24
|
-
if self.mustache_render_manager
|
25
|
-
## 当前用户没有登录,跳往的url
|
26
|
-
redirect_to ::MustacheRender.config.user_login_url ## 用户登录的url
|
27
|
-
elsif !(::MustacheRenderManager.authenticate?(self.mustache_render_manager))
|
28
|
-
redirect_to ::MustacheRender.config.manager_authenticate_fail_url ## 用户没有权限要跳转的url
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def mustache_render_manager
|
34
|
-
@_mustache_render_manager
|
35
|
-
end
|
36
|
-
|
37
|
-
def mustache_render_manager= user
|
38
|
-
return @_mustache_render_manager if defined?(@_mustache_render_manager)
|
39
|
-
@_mustache_render_manager ||= user
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Manage
|
3
|
-
class FoldersController < BaseController
|
4
|
-
def index
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def show
|
9
|
-
@mustache_render_folder = MustacheRenderFolder.find params[:id]
|
10
|
-
@mustache_render_templates = @mustache_render_folder.templates
|
11
|
-
end
|
12
|
-
|
13
|
-
def new
|
14
|
-
@mustache_render_folder = MustacheRenderFolder.new(:parent_id => params[:parent_id])
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
def edit
|
19
|
-
@mustache_render_folder = MustacheRenderFolder.find params[:id]
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
def create
|
24
|
-
@mustache_render_folder = MustacheRenderFolder.new(params[:mustache_render_folder])
|
25
|
-
|
26
|
-
if @mustache_render_folder.save
|
27
|
-
redirect_to mustache_render_manage_folder_url(@mustache_render_folder)
|
28
|
-
else
|
29
|
-
render :new
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def update
|
34
|
-
@mustache_render_folder = MustacheRenderFolder.find params[:id]
|
35
|
-
|
36
|
-
if @mustache_render_folder.update_attributes(params[:mustache_render_folder])
|
37
|
-
redirect_to mustache_render_manage_folder_url(@mustache_render_folder)
|
38
|
-
else
|
39
|
-
render :edit
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def destroy
|
44
|
-
# TODO: 是否增加删除功能
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Manage
|
3
|
-
class TemplateVersionsController < BaseController
|
4
|
-
before_filter :load_template_record
|
5
|
-
|
6
|
-
def show
|
7
|
-
@mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
|
8
|
-
end
|
9
|
-
|
10
|
-
def index
|
11
|
-
@mustache_render_template_versions = @mustache_render_template.template_versions
|
12
|
-
end
|
13
|
-
|
14
|
-
def destroy
|
15
|
-
# TODO: 是否增加删除功能
|
16
|
-
@mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
|
17
|
-
|
18
|
-
@mustache_render_template_version.destroy
|
19
|
-
|
20
|
-
redirect_to params[:return_to] || mustache_render_manage_folder_template_template_versions_url(
|
21
|
-
:folder_id => @mustache_render_template_version.folder_id,
|
22
|
-
:template_id => @mustache_render_template_version.template_id
|
23
|
-
)
|
24
|
-
end
|
25
|
-
|
26
|
-
def edit
|
27
|
-
@mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
|
28
|
-
end
|
29
|
-
|
30
|
-
def update
|
31
|
-
@mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
|
32
|
-
|
33
|
-
if @mustache_render_template_version.update_attributes(params[:mustache_render_template_version])
|
34
|
-
respond_to do |format|
|
35
|
-
format.html { redirect_to mustache_render_manage_folder_template_template_version_url(
|
36
|
-
:folder_id => @mustache_render_template_version.folder_id,
|
37
|
-
:template_id => @mustache_render_template_version.template_id,
|
38
|
-
:id => @mustache_render_template_version.id
|
39
|
-
)}
|
40
|
-
format.json { head :no_content }
|
41
|
-
end
|
42
|
-
else
|
43
|
-
respond_to do |format|
|
44
|
-
format.html { render 'edit' }
|
45
|
-
format.json { render :json => @mustache_render_template_version.errors, :status => :unprocessable_entity }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def revert
|
51
|
-
# TODO: 是否增加还原功能
|
52
|
-
@mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
|
53
|
-
|
54
|
-
@mustache_render_template_version.revert
|
55
|
-
|
56
|
-
redirect_to params[:return_to] || mustache_render_manage_folder_template_template_versions_url(
|
57
|
-
:folder_id => @mustache_render_template_version.folder_id,
|
58
|
-
:template_id => @mustache_render_template_version.template_id
|
59
|
-
)
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
protected
|
64
|
-
|
65
|
-
def load_template_record
|
66
|
-
@mustache_render_template = MustacheRenderTemplate.find params[:template_id]
|
67
|
-
@mustache_render_folder = @mustache_render_template.folder
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Manage
|
3
|
-
class TemplatesController < BaseController
|
4
|
-
before_filter :load_folder_record
|
5
|
-
|
6
|
-
def show
|
7
|
-
@mustache_render_template = MustacheRenderTemplate.find params[:id]
|
8
|
-
end
|
9
|
-
|
10
|
-
def new
|
11
|
-
@mustache_render_template = MustacheRenderTemplate.new(:folder_id => params[:folder_id])
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def edit
|
16
|
-
@mustache_render_template = MustacheRenderTemplate.find params[:id]
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def create
|
21
|
-
@mustache_render_template = MustacheRenderTemplate.new(params[:mustache_render_template].merge(
|
22
|
-
:create_user_id => mustache_render_manager.try(:id),
|
23
|
-
:last_user_id => mustache_render_manager.try(:id)
|
24
|
-
))
|
25
|
-
|
26
|
-
if @mustache_render_template.save
|
27
|
-
redirect_to mustache_render_manage_folder_template_url(
|
28
|
-
:folder_id => @mustache_render_template.folder_id, :id => @mustache_render_template
|
29
|
-
)
|
30
|
-
else
|
31
|
-
render :new
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def update
|
36
|
-
@mustache_render_template = MustacheRenderTemplate.find params[:id]
|
37
|
-
|
38
|
-
@mustache_render_template.update_attributes(params[:mustache_render_template].merge(
|
39
|
-
:last_user_id => mustache_render_manager.try(:id)
|
40
|
-
))
|
41
|
-
|
42
|
-
if @mustache_render_template.errors.empty?
|
43
|
-
redirect_to mustache_render_manage_folder_template_url(
|
44
|
-
:folder_id => @mustache_render_template.folder_id, :id => @mustache_render_template
|
45
|
-
)
|
46
|
-
else
|
47
|
-
render :edit
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def destroy
|
52
|
-
# TODO: 是否增加删除功能
|
53
|
-
end
|
54
|
-
|
55
|
-
protected
|
56
|
-
|
57
|
-
def load_folder_record
|
58
|
-
@mustache_render_folder = MustacheRenderFolder.find params[:folder_id]
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
# #
|
3
|
-
# # 注册action view handler
|
4
|
-
# #
|
5
|
-
# #
|
6
|
-
# module MustacheRender::CoreExt
|
7
|
-
# module ActionViewHandler
|
8
|
-
# def self.call template
|
9
|
-
# if template.locals.include? :mustache
|
10
|
-
# ::MustacheRender::Mustache.render(template.source.inspect, {}).html_safe
|
11
|
-
# else
|
12
|
-
# "#{template.source.inspect}".html_safe
|
13
|
-
# end
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# end
|
17
|
-
# end
|
18
|
-
#
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Manage
|
3
|
-
module BaseHelper
|
4
|
-
# 输出基本的js代码
|
5
|
-
def output_base_js_code
|
6
|
-
# if MustacheRender.adapter.rails_2?
|
7
|
-
# # rails 2 will render
|
8
|
-
# <<-HTML
|
9
|
-
|
10
|
-
# HTML
|
11
|
-
# else
|
12
|
-
# # rails_3 will render
|
13
|
-
# <<-HTML
|
14
|
-
|
15
|
-
# HTML
|
16
|
-
# end
|
17
|
-
end
|
18
|
-
|
19
|
-
# 输出jquery code
|
20
|
-
def generate_jquery_code
|
21
|
-
@@generated_jquery_code ||= File.read("#{::MustacheRender.config.lib_base_path}/resources/jquery.js")
|
22
|
-
end
|
23
|
-
|
24
|
-
def generate_jquery_ujs_code
|
25
|
-
@@generated_jquery_ujs_code ||= File.read("#{::MustacheRender.config.lib_base_path}/resources/jquery_ujs.js")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
@@ -1,128 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module MustacheRender::Models
|
3
|
-
module MustacheRenderFolderMixin
|
4
|
-
def self.included(base)
|
5
|
-
base.class_eval do
|
6
|
-
table_name = 'mustache_render_folders'
|
7
|
-
|
8
|
-
has_many :templates, :class_name => 'MustacheRenderTemplate', :foreign_key => 'folder_id'
|
9
|
-
|
10
|
-
attr_accessible :parent_id, :name, :note
|
11
|
-
|
12
|
-
acts_as_nested_set(
|
13
|
-
:parent_column => 'parent_id',
|
14
|
-
:left_column => 'left_id',
|
15
|
-
:right_column => 'right_id',
|
16
|
-
:depth_column => 'depth',
|
17
|
-
:dependent => :delete_all, # or :destroy
|
18
|
-
:polymorphic => false,
|
19
|
-
:counter_cache => 'children_count'
|
20
|
-
# :before_add => :do_before_add_stuff,
|
21
|
-
# :after_add => :do_after_add_stuff,
|
22
|
-
# :before_remove => :do_before_remove_stuff,
|
23
|
-
# :after_remove => :do_after_remove_stuff
|
24
|
-
)
|
25
|
-
|
26
|
-
validate :impl_validate_full_path
|
27
|
-
validates_presence_of :name
|
28
|
-
validates_uniqueness_of :full_path
|
29
|
-
after_save :impl_update_children_full_path
|
30
|
-
|
31
|
-
extend ClassMethods
|
32
|
-
include InstanceMethods
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
module ClassMethods
|
37
|
-
#
|
38
|
-
# 相关的parents
|
39
|
-
#
|
40
|
-
def associate_parents(objects)
|
41
|
-
if objects.all?{|o| o.respond_to?(:association)}
|
42
|
-
id_indexed = objects.index_by(&:id)
|
43
|
-
objects.each do |object|
|
44
|
-
if !(association = object.association(:parent)).loaded? && (parent = id_indexed[object.parent_id])
|
45
|
-
association.target = parent
|
46
|
-
association.set_inverse_instance(parent)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
else
|
50
|
-
objects
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def nested_set_options(class_or_item=nil, mover = nil)
|
55
|
-
class_or_item ||= self
|
56
|
-
|
57
|
-
if class_or_item.is_a? Array
|
58
|
-
items = class_or_item.reject { |e| !e.root? }
|
59
|
-
else
|
60
|
-
class_or_item = class_or_item.roots if class_or_item.respond_to?(:scoped)
|
61
|
-
items = Array(class_or_item)
|
62
|
-
end
|
63
|
-
result = []
|
64
|
-
items.each do |root|
|
65
|
-
result += root.class.associate_parents(root.self_and_descendants).map do |i|
|
66
|
-
if mover.nil? || mover.new_record? || mover.move_possible?(i)
|
67
|
-
[yield(i), i.id]
|
68
|
-
end
|
69
|
-
end.compact
|
70
|
-
end
|
71
|
-
result
|
72
|
-
end
|
73
|
-
|
74
|
-
def nested_set_select_options(class_or_item=nil, mover=nil, options={})
|
75
|
-
result = []
|
76
|
-
|
77
|
-
result << ['- - 请选择 - -', nil] if options[:include_blank]
|
78
|
-
|
79
|
-
result += nested_set_options(class_or_item, mover) do |item|
|
80
|
-
"#{'- ' * item.level}#{item.name}"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
module InstanceMethods
|
86
|
-
|
87
|
-
protected
|
88
|
-
def impl_generate_full_path
|
89
|
-
tmp_parent = self.class.find_by_id self.parent_id
|
90
|
-
|
91
|
-
if tmp_parent
|
92
|
-
"/#{tmp_parent.self_and_ancestors.map(&:name).join('/')}/#{self.name}"
|
93
|
-
else
|
94
|
-
"/#{self.name}"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def impl_validate_full_path
|
99
|
-
self.full_path = impl_generate_full_path
|
100
|
-
end
|
101
|
-
|
102
|
-
def impl_update_children_full_path
|
103
|
-
self.children.each do |child|
|
104
|
-
child.send :impl_validate_full_path
|
105
|
-
child.save
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
private
|
110
|
-
|
111
|
-
# def do_before_add_stuff(child_node)
|
112
|
-
# # do whatever with the child
|
113
|
-
# end
|
114
|
-
#
|
115
|
-
# def do_after_add_stuff(child_node)
|
116
|
-
# # do whatever with the child
|
117
|
-
# end
|
118
|
-
#
|
119
|
-
# def do_before_remove_stuff(child_node)
|
120
|
-
# # do whatever with the child
|
121
|
-
# end
|
122
|
-
#
|
123
|
-
# def do_after_remove_stuff(child_node)
|
124
|
-
# # do whatever with the child
|
125
|
-
# end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|