Applescript (через appscript) останавливает обработку в цикле
Следующий код ruby автоматически создает страницы внутри VoodooPad и добавляет метатеги на каждую страницу.
vp = app("VoodooPad.app")
doc = vp.open vpdoc
page_names = [@name]
if self.class.to_s.match('Stake::Stack')
# Create the release notes page. Only run on parent stack
notes = "#{@name} Release Notes"
page_names.push notes
doc.remove :with_name => notes
doc.create :new => :page, :with_name => notes, :with_content => self.release_notes
end
# Create the settings page
settings = "#{@name} Settings"
page_names.push settings
doc.remove :with_name => settings
doc.create :new => :page, :with_name => settings, :with_content => self.to_md
page_names.each do |page_name|
# Add the meta tags to the product page
page = doc.pages[page_name]
puts page_name
page.remove_meta_record :with_key => "description"
page.remove_meta_record :with_key => "url"
page.remove_meta_record :with_key => "name"
page.remove_meta_record :with_key => "image"
page.remove_meta_record :with_key => "version"
page.remove_meta_record :with_key => "stacks_version"
page.add_meta_record :with_value => {'version' => @version_str}
page.add_meta_record :with_value => {'stacks_version' => @stacks_version}
page.add_meta_record :with_value => {'subtitle' => @subtitle}
page.add_meta_record :with_value => {'url' => @info_url}
page.add_meta_record :with_value => {'image' => @basename + '@128.png'}
page.add_meta_record :with_value => {'name' => @name}
end
В каждом блоке одинаковые метатеги добавляются на 3 страницы. Тем не менее, теги добавляются только на 2 из 3 страниц. Если мы возьмем в качестве примера название "Значки", вот мои имена страниц.
Badges
Badges Release Notes
Badges Settings
Независимо от порядка массива, страница "Значки" всегда помечается правильно. Тем не менее, для других 2 страниц, которые когда-либо обрабатываются первые работы. Другой нет.
Я подумал, может быть, это пробелы в именах страниц. Однако это не имеет значения. Я получаю такое же поведение. Если вы заметили, что код также динамически правильно создает обе эти страницы.
Я также попытался добавить сон, думая, что это может быть момент времени. Нету.
Я застрял. Помогите.
1 ответ
Я понял. Страница, к которой я добавлял теги, не может быть текущей активной страницей.
vp = app("VoodooPad.app")
doc = vp.open vpdoc
page_names = Array.new
if self.class.to_s.match('Stake::Stack')
# Only the parent stack has a main page
page_names.push @name
# Create the release notes page. Only run on parent stack
notes = "#{@name} Release Notes"
page_names.push notes
doc.remove :with_name => notes
doc.create :new => :page, :with_name => notes, :with_content => self.release_notes
end
# Create the settings page
settings = "#{@name} Settings"
page_names.push settings
doc.remove :with_name => settings
doc.create :new => :page, :with_name => settings, :with_content => self.to_md
# Have to open to different page to ensure its not open when I add meta tags.
doc.open_page :with_name => 'index'
page_names.each do |page_name|
# Add the meta tags to the product page
page = doc.pages[page_name]
puts page_name
page.remove_meta_record :with_key => "description"
page.remove_meta_record :with_key => "url"
page.remove_meta_record :with_key => "name"
page.remove_meta_record :with_key => "image"
page.remove_meta_record :with_key => "version"
page.remove_meta_record :with_key => "stacks_version"
page.add_meta_record :with_value => {'version' => @version_str}
page.add_meta_record :with_value => {'stacks_version' => @stacks_version}
page.add_meta_record :with_value => {'subtitle' => @subtitle}
page.add_meta_record :with_value => {'url' => @info_url}
page.add_meta_record :with_value => {'image' => "#{@basename}@128.png".downcase}
page.add_meta_record :with_value => {'name' => @name}
# Open current page to ensure next page is not open or else cannot add tags
doc.open_page :with_name => page_name
end