Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.weblog.metaWeblogApi.copyFromStruct
on copyFromStruct (adrstruct, adrpost) {
<<Changes
<<4/6/02; 6:41:48 PM by DW
<<If the struct has a title, create a shortcut for it.
<<3/15/02; 12:36:35 PM by DW
<<Add support for callbacks.
<<3/15/02; 8:39:20 AM by DW
<<If the struct contains a boolean flNotOnHomePage, copy that into the post table.
<<3/13/02; 8:13:12 PM by DW
<<Created.
local (idpost = number (nameof (adrpost^)));
on neuter (s) {
return (radio.weblog.bloggerApi.neuterMacros (s))};
bundle { //call callbacks
local (adrblog = radio.weblog.init ());
local (adrcallbacks = @adrblog^.callbacks.metaWeblogCopyFromStruct);
if not defined (adrcallbacks^) {
new (tabletype, adrcallbacks)};
local (adrcallback);
for adrcallback in adrcallbacks {
while typeOf (adrcallback^) == addressType {
adrcallback = adrcallback^};
try {adrcallback^ (adrstruct, adrpost)}}};
if defined (adrstruct^.link) {
adrpost^.link = neuter (adrstruct^.link)};
if defined (adrstruct^.title) {
local (newtitle = neuter (adrstruct^.title));
radio.shortcuts.addTitledPost (adrpost, newtitle);
adrpost^.title = newtitle};
if defined (adrstruct^.enclosure) {
new (tabletype, @adrpost^.enclosure);
adrpost^.enclosure.length = number (adrstruct^.enclosure.length);
adrpost^.enclosure.type = neuter (adrstruct^.enclosure.type);
adrpost^.enclosure.url = neuter (adrstruct^.enclosure.url)};
if defined (adrstruct^.source) {
adrpost^.sourceName = neuter (adrstruct^.source.name);
adrpost^.sourceUrl = neuter (adrstruct^.source.url);
adrpost^.sourceTime = clock.now ()};
if defined (adrstruct^.categories) {
local (adrblog = radio.weblog.init ());
bundle { //first remove the post from any categories it's already in
local (adrcat);
for adrcat in @adrblog^.categories {
if adrcat^.storyList contains idpost {
adrcat^.fldirty = true;
adrcat^.storyList = adrcat^.storyList - idpost}}};
local (s);
new (tabletype, @adrpost^.categories);
for s in adrstruct^.categories {
local (adrblogcat = @adrblog^.categories.[s]);
if defined (adrblogcat^) {
adrpost^.categories.[s] = true;
adrblogcat^.storyList = adrblogcat^.storyList + {idpost};
adrblogcat^.fldirty = true}}};
if defined (adrstruct^.flNotOnHomePage) {
adrpost^.flNotOnHomePage = adrstruct^.flNotOnHomePage}}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.