[ANN] XMLParserHTML moved to GitHub

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] XMLParserHTML moved to GitHub

Sven Van Caekenberghe-2
Well, I am trying to help you ;-)

Did you read everything that I wrote ?

Did you try the 'Basic Inspect It' menu item ?

> On 7 Jan 2020, at 23:19, LawsonEnglish <[hidden email]> wrote:
>
> Thanks for responding. I won’t say that I’m not screwing up as I’ve had severe health problems (impacting both physical and cognitive abilities to the point that I am permanently on US government disability).
>
> Even so, I did the Squeak from the very start [https://www.youtube.com/playlist?list=PL6601A198DF14788D] videos some years ago, and as far as I can tell, I can still understand Smalltalk and its features to that level.
>
> The “do it and go” yields the same “#new was sent to nil” error.
>
> Note that “do it” doesn’t give an error. “inspect does” — the “#new was sent to nil”
>
> As before,
>
> ingredientsXML = nil.
>
> returns “false”
>
> This could be a plugin issue in Mac Catalina as Apple has added all sorts of arcane security features with the new OS.
>
>
> Or it just could be my literally crippled brain not seeing something obvious due to the fallout from my health issues.
>
> I have no way of knowing (obviously)
>
>
> Thanks for responding.
>
> I had hoped to do new videos discussing the neat features of Pharo similar to the “very start” videos, but since I can’t get things started, obviously I can’t make new "from the very start” videos either.
>
> L
>
>
>> On Jan 7, 2020, at 3:04 PM, PBKResearch <[hidden email]> wrote:
>>
>> I agree it makes no sense. I repeated exactly what you describe in a new playground (in Pharo 6.1 on Windows 10) and all worked as expected – essentially the same result as Torsten reported in his first post. I wonder if it might be something Mac related in the operation of Playground.
>>  
>> As a desperate try to explain it, please see what happens if you open a Playground with just your single line
>> ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference’
>> and then select ‘do it and go’. You should find an inspector pane opening to the right in the Playground, with the result of the parse. If this fails, the standard suggestion is to open a debugger on you error message and try to work back through the stack to see how execution got there.
>>  
>> Just to discourage you further, when you do get to read the contents of the URL, you will find that the USDA have changed everything. All the data are now on a separate web site, probably in a new layout. This is one of the perpetual hassles of web scraping – the web site authors have to justify their existence by rewriting everything. I wrote this section of the scraping booklet, working up something I had done as a one-off a year or so earlier, and then I found that the USDA had changed the layout in the interim and much needed to be rewritten.
>>  
>> HTH – in part at least.
>>  
>> Peter Kenny
>>  
>> To Torsten – I agree I was slipshod in my drafting – I was in a hurry. Instead of saying ‘can screw things up’ I should have said ‘can produce counter-intuitive results’, as exemplified by the fact that, in your first example, ‘ingredientsXML’ can mean different things depending on whether you execute it all in one go or a line at a time.
>>  
>> From: Pharo-users <[hidden email]> On Behalf Of LawsonEnglish
>> Sent: 07 January 2020 20:55
>> To: Any question about pharo is welcome <[hidden email]>
>> Subject: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>  
>> I deleted the playground and entered the text thusly
>>  
>> ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference’.
>>  
>> “do it” has no complaints
>>  
>> ingredientsXML = nil
>>  
>> yields “false"
>>  
>> ingredientsXML inspect
>>  
>> has errors: #new sent to nil
>>  
>>  
>> .
>>  
>> This makes no sense at all.
>>  
>>  
>> L
>>  
>>
>>
>>> On Jan 7, 2020, at 1:55 AM, PBKResearch <[hidden email]> wrote:
>>>  
>>> It may be a quirk of how Pharo Playground works. It doesn't need local variable declarations - which is convenient - but putting them in can screw things up. Try your snippet again without the first line. Compare Torsten's code.
>>>
>>> HTH
>>>
>>> Peter Kenny
>>>
>>> -----Original Message-----
>>> From: Pharo-users <[hidden email]> On Behalf Of Torsten Bergmann
>>> Sent: 07 January 2020 07:47
>>> To: [hidden email]
>>> Cc: [hidden email]
>>> Subject: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>>
>>> Works without a problem (Pharo 8 on Windows), see attached. So it looks like a local problem.
>>>
>>> Just check the debugger and compare to the squeak version where you run in trouble.
>>> Maybe the document could not be retrieved on your machine.
>>>
>>> Bye
>>> T.
>>>
>>>
>>>> Gesendet: Dienstag, 07. Januar 2020 um 04:42 Uhr
>>>> Von: "LawsonEnglish" <[hidden email]>
>>>> An: [hidden email]
>>>> Betreff: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>>>
>>>> Torsten Bergmann wrote
>>>>
>>>>> Hi,
>>>>>
>>>>>
>>>>> You can load using
>>>>>
>>>>>   Metacello new
>>>>>                baseline: 'XMLParserHTML';
>>>>>                repository: 'github://pharo-contributions/XML-XMLParserHTML/src';
>>>>>                load.
>>>>>
>>>>>
>>>>> Bye
>>>>> T.
>>>>
>>>> Hi,
>>>>
>>>> I'm trying to use the sample code in the pharo screen scraping booklet
>>>> —
>>>> http://books.pharo.org/booklet-Scraping/pdf/2018-09-02-scrapingbook.pdf — but while everything appears to load, I'm getting an odd behavior from:
>>>>
>>>> /| ingredientsXML |
>>>> ingredientsXML := XMLHTMLParser parseURL:
>>>> 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
>>>> ingredientsXML inspect/
>>>>
>>>> "#new was sent to nil"
>>>>
>>>> No matter what URL I use, I get the same message.
>>>>
>>>> I'm using Mac OS Catalina so I thought I might have some strange Mac
>>>> OS security issue (like it was quietly refusing to allow Pharo to
>>>> access the internet), but I tested with squeak and the old
>>>>
>>>> /html :=(HtmlParser parse:
>>>> 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'
>>>> asUrl retrieveContents content)/
>>>>
>>>> and that returns actual html without any problems.
>>>>
>>>>
>>>> Suggestions?
>>>>
>>>>
>>>> Thanks.
>>>>
>>>> L
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>>
>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] XMLParserHTML moved to GitHub

LawsonEnglish
In reply to this post by Sven Van Caekenberghe-2
“Simple inspect” works fine.

THe trace is:

UndefinedObject(Object)>>doesNotUnderstand: #new
Message>>sentTo:
UndefinedObject(Object)>>doesNotUnderstand: #new
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>textColorForShoutProperty:
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>defaultDefaultColor
XMLDocumentHighlightDefaults(XMLHighlightDefaults)>>defaultColor
XMLDocumentHighlighter(XMLHighlighter)>>initializeColorsWithDefaults:
XMLDocumentHighlighter>>initializeColorsWithDefaults:
XMLDocumentHighlighter(XMLHighlighter)>>initialize
XMLDocumentHighlighter class(Behavior)>>new
XMLHighlightingWriter>>on:
XMLHighlightingWriter class(XMLWriter class)>>on:
XMLHighlightingWriter class(XMLWriter class)>>new
XMLDocument(XMLNode)>>asHighlightedTextWrittenWith:
XMLDocument(XMLNode)>>treeViewLabelText
[ :each | each treeViewLabelText ] in XMLDocument(XMLNode)>>gtInspectorTreeIn:inContext: in Block: [ :each | each treeViewLabelText ]
BlockClosure>>glamourValueWithArgs:
BlockClosure(ProtoObject)>>glamourValue:
GLMTreePresentation(GLMFormatedPresentation)>>formatedDisplayValueOf:
GLMTreeMorphNodeModel>>displayText
GLMTreeMorphNodeModel>>elementColumn
[ :node :cont | node perform: self rowMorphGetSelector ] in MorphTreeColumn>>rowMorphGetterBlock in Block: [ :node :cont | node perform: self rowMorphGetSele...etc...
MorphTreeColumn>>rowMorphFor:
[ :col |
| v |
v := col rowMorphFor: complexContents.
controls add: v.
col -> v ] in MorphTreeNodeMorph>>buildRowMorph in Block: [ :col | ...
OrderedCollection>>collect:
MorphTreeNodeMorph>>buildRowMorph
MorphTreeNodeMorph>>initRow
MorphTreeNodeMorph>>initWithContents:prior:forList:indentLevel:
[ :item :idx |
priorMorph := self indentingItemClass new
        initWithContents: item
        prior: priorMorph
        forList: self
        indentLevel: newIndent.
firstAddition ifNil: [ firstAddition := priorMorph ].
morphList add: priorMorph.
"Was this row expanded ? if true -> expand it
                        again "
((item hasEquivalentIn: expandedItems) or: [ priorMorph isExpanded ])
        ifTrue: [ priorMorph isExpanded: true.
                priorMorph
                        addChildrenForList: self
                        addingTo: morphList
                        withExpandedItems: expandedItems ] ] in GLMPaginatedMorphTreeMorph(MorphTreeMorph)>>addMorphsTo:from:withExpandedItems:atLevel: in Block: [ :item :idx | ...
OrderedCollection(SequenceableCollection)>>withIndexDo:



.

If it isn’t obvious what is going wrong from the above, I gues the thing to do is reinstall Pharo, and go through the steps of installing the various packages while recording them. If I get the same error, I’ll post the video of what I did  on youtube. If I don’t an error, then it was operator error from the start, obviously.

Thanks for your help.


L

> On Jan 7, 2020, at 3:17 PM, Sven Van Caekenberghe <[hidden email]> wrote:
>
> Something is wrong in your image.
> The XML package adds special GT inspector views, the error is probably there.
> This has nothing to do with the platform.
>
> BTW, a stack trace would be much appreciated, like:
>
> ZeroDivide when doing: 1/0
>
> SmallInteger>>/
> UndefinedObject>>DoIt
> OpalCompiler>>evaluate
> RubSmalltalkEditor>>evaluate:andDo:
> RubSmalltalkEditor>>highlightEvaluateAndDo:
> [ textMorph textArea editor highlightEvaluateAndDo: ann action.
> textMorph shoutStyler style: textMorph text ] in [ textMorph textArea
> handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
> textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: in Block: [ textMorph textArea editor highlightEvaluateAndDo...etc...
> RubEditingArea(RubAbstractTextArea)>>handleEdit:
> [ textMorph textArea
> handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
> textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: in Block: [ textMorph textArea...
> WorldState>>runStepMethodsIn:
> WorldMorph>>runStepMethods
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> WorldMorph>>doOneCycle
> WorldMorph class>>doOneCycle
> [ [ WorldMorph doOneCycle.
> Processor yield.
> false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess in Block: [ [ WorldMorph doOneCycle....
> [ self value.
> Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....
>
> You can copy that from the debugger extra menu (top right).
>
> Try 'Basic Inspect It' instead of 'Inspect It', this will use an older less complex inspector, that will probably work.
>
>> On 7 Jan 2020, at 23:06, LawsonEnglish <[hidden email]> wrote:
>>
>> Well, as you can see in my response elsewhere, none of that actually works as you describe.
>>
>>>    ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
>>
>> Doesn’t raise any errors, with or without the local variable declaration.
>>
>>> ingredientsXML = nil returns false
>>
>>> ingredientsXML inspect
>>
>> Raises the message “#new on nil
>>
>> I “do it” on the entire text or on each line in the order entered. It doesn’t matter.
>>
>> I’m using a Mac with Mac OS X Catalina, using Pharo 7.
>>
>>
>> L
>>
>>
>>> On Jan 7, 2020, at 5:31 AM, Torsten Bergmann <[hidden email]> wrote:
>>>
>>> Agree with Peter - but "screw things up" means then the users screws up.
>>>
>>> Pharo and the Playground is working fine on them. But one has to know the difference when
>>> working with the Playground:
>>>
>>> 1. If you evaluate with an explicit variable declaration than the variable is freshly defined and used like a temporary variable in a method:
>>>
>>>    | ingredientsXML |
>>>    ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
>>>    ingredientsXML inspect
>>>
>>> You have to selected the full text and evaluate it (either with "do It" or "print it" to get the result.
>>>
>>> If you only select "ingredientsXML inspect" part first and evaluate then the variable "ingredientsXML" is not known, undefined
>>> and uninitialized and therefore results in a nil.
>>>
>>> 2. If in the playground you do not give an explicit variable declaration at the beginning line like for example in
>>>
>>>        ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
>>>        ingredientsXML inspect    
>>>
>>>  then a "workspace local variable" is implicitly created by the playground as soon as you evaluate which means
>>>
>>>    - "ingredientsXML" is defined as a workspace variable as soon as you evaluate
>>>    - the contents of "ingredientsXML" is preserved over different evaluations within the workspace / playground
>>>    - you can use only "ingredientsXML" within this playground (not in another plaground)
>>>
>>>  So you can evaluate the first line doing the assignment (this initializes the workspace variable "ingredientsXML" for the current playground)
>>>  and when you later want to use it again you can just inspect it or evaluate the second line in the same playground.
>>>
>>>  If you like you can open a second playground which can have its own "ingredientsXML" workspace variable.
>>>
>>> Workspace variables (or "playground variables") are convenient for experimenting - as they are preserved - but
>>> yes they might confuse you when you cant remember what was done with them last.
>>>
>>> Bye
>>> T.
>>>
>>>> Gesendet: Dienstag, 07. Januar 2020 um 09:55 Uhr
>>>> Von: "PBKResearch" <[hidden email]>
>>>> An: "'Any question about pharo is welcome'" <[hidden email]>
>>>> Betreff: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>>>
>>>> It may be a quirk of how Pharo Playground works. It doesn't need local variable declarations - which is convenient - but putting them in can screw things up. Try your snippet again without the first line. Compare Torsten's code.
>>>>
>>>> HTH
>>>>
>>>> Peter Kenny
>>>>
>>>> -----Original Message-----
>>>> From: Pharo-users <[hidden email]> On Behalf Of Torsten Bergmann
>>>> Sent: 07 January 2020 07:47
>>>> To: [hidden email]
>>>> Cc: [hidden email]
>>>> Subject: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>>>
>>>> Works without a problem (Pharo 8 on Windows), see attached. So it looks like a local problem.
>>>>
>>>> Just check the debugger and compare to the squeak version where you run in trouble.
>>>> Maybe the document could not be retrieved on your machine.
>>>>
>>>> Bye
>>>> T.
>>>>
>>>>> Gesendet: Dienstag, 07. Januar 2020 um 04:42 Uhr
>>>>> Von: "LawsonEnglish" <[hidden email]>
>>>>> An: [hidden email]
>>>>> Betreff: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub
>>>>>
>>>>> Torsten Bergmann wrote
>>>>>> Hi,
>>>>>>
>>>>>>
>>>>>> You can load using
>>>>>>
>>>>>> Metacello new
>>>>>> baseline: 'XMLParserHTML';
>>>>>> repository: 'github://pharo-contributions/XML-XMLParserHTML/src';
>>>>>> load.
>>>>>>
>>>>>>
>>>>>> Bye
>>>>>> T.
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to use the sample code in the pharo screen scraping booklet
>>>>> —
>>>>> http://books.pharo.org/booklet-Scraping/pdf/2018-09-02-scrapingbook.pdf — but while everything appears to load, I'm getting an odd behavior from:
>>>>>
>>>>> /| ingredientsXML |
>>>>> ingredientsXML := XMLHTMLParser parseURL:
>>>>> 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
>>>>> ingredientsXML inspect/
>>>>>
>>>>> "#new was sent to nil"
>>>>>
>>>>> No matter what URL I use, I get the same message.
>>>>>
>>>>> I'm using Mac OS Catalina so I thought I might have some strange Mac
>>>>> OS security issue (like it was quietly refusing to allow Pharo to
>>>>> access the internet), but I tested with squeak and the old
>>>>>
>>>>> /html :=(HtmlParser parse:
>>>>> 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'
>>>>> asUrl retrieveContents content)/
>>>>>
>>>>> and that returns actual html without any problems.
>>>>>
>>>>>
>>>>> Suggestions?
>>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>> L
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] XMLParserHTML moved to GitHub

Sven Van Caekenberghe-2
I just tried it in a relatively fresh 7.0.4 image on macOS and it worked as advertised. (The syntax colouring of the XML is off in dark look though).

Here is a screenshot:


All I did was:

 Metacello new
baseline: 'XMLParserHTML';
repository: '<a href="github://pharo-contributions/XML-XMLParserHTML/src" class="">github://pharo-contributions/XML-XMLParserHTML/src';
load.

XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.

Good luck.

Sven

On 7 Jan 2020, at 23:31, LawsonEnglish <[hidden email]> wrote:

“Simple inspect” works fine.

THe trace is:

UndefinedObject(Object)>>doesNotUnderstand: #new
Message>>sentTo:
UndefinedObject(Object)>>doesNotUnderstand: #new
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>textColorForShoutProperty:
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>defaultDefaultColor
XMLDocumentHighlightDefaults(XMLHighlightDefaults)>>defaultColor
XMLDocumentHighlighter(XMLHighlighter)>>initializeColorsWithDefaults:
XMLDocumentHighlighter>>initializeColorsWithDefaults:
XMLDocumentHighlighter(XMLHighlighter)>>initialize
XMLDocumentHighlighter class(Behavior)>>new
XMLHighlightingWriter>>on:
XMLHighlightingWriter class(XMLWriter class)>>on:
XMLHighlightingWriter class(XMLWriter class)>>new
XMLDocument(XMLNode)>>asHighlightedTextWrittenWith:
XMLDocument(XMLNode)>>treeViewLabelText
[ :each | each treeViewLabelText ] in XMLDocument(XMLNode)>>gtInspectorTreeIn:inContext: in Block: [ :each | each treeViewLabelText ]
BlockClosure>>glamourValueWithArgs:
BlockClosure(ProtoObject)>>glamourValue:
GLMTreePresentation(GLMFormatedPresentation)>>formatedDisplayValueOf:
GLMTreeMorphNodeModel>>displayText
GLMTreeMorphNodeModel>>elementColumn
[ :node :cont | node perform: self rowMorphGetSelector ] in MorphTreeColumn>>rowMorphGetterBlock in Block: [ :node :cont | node perform: self rowMorphGetSele...etc...
MorphTreeColumn>>rowMorphFor:
[ :col | 
| v |
v := col rowMorphFor: complexContents.
controls add: v.
col -> v ] in MorphTreeNodeMorph>>buildRowMorph in Block: [ :col | ...
OrderedCollection>>collect:
MorphTreeNodeMorph>>buildRowMorph
MorphTreeNodeMorph>>initRow
MorphTreeNodeMorph>>initWithContents:prior:forList:indentLevel:
[ :item :idx | 
priorMorph := self indentingItemClass new
initWithContents: item
prior: priorMorph
forList: self
indentLevel: newIndent.
firstAddition ifNil: [ firstAddition := priorMorph ].
morphList add: priorMorph.
"Was this row expanded ? if true -> expand it
again "
((item hasEquivalentIn: expandedItems) or: [ priorMorph isExpanded ])
ifTrue: [ priorMorph isExpanded: true.
priorMorph
addChildrenForList: self
addingTo: morphList
withExpandedItems: expandedItems ] ] in GLMPaginatedMorphTreeMorph(MorphTreeMorph)>>addMorphsTo:from:withExpandedItems:atLevel: in Block: [ :item :idx | ...
OrderedCollection(SequenceableCollection)>>withIndexDo:



.

If it isn’t obvious what is going wrong from the above, I gues the thing to do is reinstall Pharo, and go through the steps of installing the various packages while recording them. If I get the same error, I’ll post the video of what I did  on youtube. If I don’t an error, then it was operator error from the start, obviously.

Thanks for your help.


L

On Jan 7, 2020, at 3:17 PM, Sven Van Caekenberghe <[hidden email]> wrote:

Something is wrong in your image. 
The XML package adds special GT inspector views, the error is probably there.
This has nothing to do with the platform.

BTW, a stack trace would be much appreciated, like:

ZeroDivide when doing: 1/0

SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
RubSmalltalkEditor>>evaluate:andDo:
RubSmalltalkEditor>>highlightEvaluateAndDo:
[ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] in [ textMorph textArea
handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: in Block: [ textMorph textArea editor highlightEvaluateAndDo...etc...
RubEditingArea(RubAbstractTextArea)>>handleEdit:
[ textMorph textArea
handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate: in Block: [ textMorph textArea...
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
WorldMorph class>>doOneCycle
[ [ WorldMorph doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess in Block: [ [ WorldMorph doOneCycle....
[ self value.
Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....

You can copy that from the debugger extra menu (top right).

Try 'Basic Inspect It' instead of 'Inspect It', this will use an older less complex inspector, that will probably work.

On 7 Jan 2020, at 23:06, LawsonEnglish <[hidden email]> wrote:

Well, as you can see in my response elsewhere, none of that actually works as you describe.

  ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.

Doesn’t raise any errors, with or without the local variable declaration.

ingredientsXML = nil returns false

ingredientsXML inspect

Raises the message “#new on nil

I “do it” on the entire text or on each line in the order entered. It doesn’t matter.

I’m using a Mac with Mac OS X Catalina, using Pharo 7.


L


On Jan 7, 2020, at 5:31 AM, Torsten Bergmann <[hidden email]> wrote:

Agree with Peter - but "screw things up" means then the users screws up.

Pharo and the Playground is working fine on them. But one has to know the difference when 
working with the Playground:

1. If you evaluate with an explicit variable declaration than the variable is freshly defined and used like a temporary variable in a method:

  | ingredientsXML |
  ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
  ingredientsXML inspect

You have to selected the full text and evaluate it (either with "do It" or "print it" to get the result. 

If you only select "ingredientsXML inspect" part first and evaluate then the variable "ingredientsXML" is not known, undefined 
and uninitialized and therefore results in a nil.

2. If in the playground you do not give an explicit variable declaration at the beginning line like for example in

      ingredientsXML := XMLHTMLParser parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
      ingredientsXML inspect    

then a "workspace local variable" is implicitly created by the playground as soon as you evaluate which means 

  - "ingredientsXML" is defined as a workspace variable as soon as you evaluate
  - the contents of "ingredientsXML" is preserved over different evaluations within the workspace / playground
  - you can use only "ingredientsXML" within this playground (not in another plaground)

So you can evaluate the first line doing the assignment (this initializes the workspace variable "ingredientsXML" for the current playground) 
and when you later want to use it again you can just inspect it or evaluate the second line in the same playground.

If you like you can open a second playground which can have its own "ingredientsXML" workspace variable.

Workspace variables (or "playground variables") are convenient for experimenting - as they are preserved - but
yes they might confuse you when you cant remember what was done with them last.

Bye
T.

Gesendet: Dienstag, 07. Januar 2020 um 09:55 Uhr
Von: "PBKResearch" <[hidden email]>
An: "'Any question about pharo is welcome'" <[hidden email]>
Betreff: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub

It may be a quirk of how Pharo Playground works. It doesn't need local variable declarations - which is convenient - but putting them in can screw things up. Try your snippet again without the first line. Compare Torsten's code.

HTH

Peter Kenny

-----Original Message-----
From: Pharo-users <[hidden email]> On Behalf Of Torsten Bergmann
Sent: 07 January 2020 07:47
To: [hidden email]
Cc: [hidden email]
Subject: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub

Works without a problem (Pharo 8 on Windows), see attached. So it looks like a local problem.

Just check the debugger and compare to the squeak version where you run in trouble.
Maybe the document could not be retrieved on your machine.

Bye
T.

Gesendet: Dienstag, 07. Januar 2020 um 04:42 Uhr
Von: "LawsonEnglish" <[hidden email]>
An: [hidden email]
Betreff: Re: [Pharo-users] [ANN] XMLParserHTML moved to GitHub

Torsten Bergmann wrote
Hi,


You can load using

Metacello new
baseline: 'XMLParserHTML';
repository: '<a href="github://pharo-contributions/XML-XMLParserHTML/src" class="">github://pharo-contributions/XML-XMLParserHTML/src';
load.


Bye
T.

Hi,

I'm trying to use the sample code in the pharo screen scraping booklet 
— 
http://books.pharo.org/booklet-Scraping/pdf/2018-09-02-scrapingbook.pdf — but while everything appears to load, I'm getting an odd behavior from:

/| ingredientsXML |
ingredientsXML := XMLHTMLParser parseURL:
'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'.
ingredientsXML inspect/

"#new was sent to nil"

No matter what URL I use, I get the same message.

I'm using Mac OS Catalina so I thought I might have some strange Mac 
OS security issue (like it was quietly refusing to allow Pharo to 
access the internet), but I tested with squeak and the old

/html :=(HtmlParser parse:
'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference'
asUrl retrieveContents content)/

and that returns actual html without any problems.


Suggestions?


Thanks.

L




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html













Reply | Threaded
Open this post in threaded view
|

Re: [ANN] XMLParserHTML moved to GitHub

Ben Coman
In reply to this post by LawsonEnglish


On Wed, 8 Jan 2020 at 06:32, LawsonEnglish <[hidden email]> wrote:
“Simple inspect” works fine.

THe trace is:

UndefinedObject(Object)>>doesNotUnderstand: #new
Message>>sentTo:
UndefinedObject(Object)>>doesNotUnderstand: #new
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>textColorForShoutProperty:
XMLDocumentHighlightDefaults class(XMLHighlightDefaults class)>>defaultDefaultColor
XMLDocumentHighlightDefaults(XMLHighlightDefaults)>>defaultColor
XMLDocumentHighlighter(XMLHighlighter)>>initializeColorsWithDefaults:
XMLDocumentHighlighter>>initializeColorsWithDefaults:
XMLDocumentHighlighter(XMLHighlighter)>>initialize
XMLDocumentHighlighter class(Behavior)>>new
XMLHighlightingWriter>>on:
XMLHighlightingWriter class(XMLWriter class)>>on:
XMLHighlightingWriter class(XMLWriter class)>>new
XMLDocument(XMLNode)>>asHighlightedTextWrittenWith:
XMLDocument(XMLNode)>>treeViewLabelText
[ :each | each treeViewLabelText ] in XMLDocument(XMLNode)>>gtInspectorTreeIn:inContext: in Block: [ :each | each treeViewLabelText ]
BlockClosure>>glamourValueWithArgs:
BlockClosure(ProtoObject)>>glamourValue:
GLMTreePresentation(GLMFormatedPresentation)>>formatedDisplayValueOf:
GLMTreeMorphNodeModel>>displayText
GLMTreeMorphNodeModel>>elementColumn
[ :node :cont | node perform: self rowMorphGetSelector ] in MorphTreeColumn>>rowMorphGetterBlock in Block: [ :node :cont | node perform: self rowMorphGetSele...etc...
MorphTreeColumn>>rowMorphFor:
[ :col |
| v |
v := col rowMorphFor: complexContents.
controls add: v.
col -> v ] in MorphTreeNodeMorph>>buildRowMorph in Block: [ :col | ...
OrderedCollection>>collect:
MorphTreeNodeMorph>>buildRowMorph
MorphTreeNodeMorph>>initRow
MorphTreeNodeMorph>>initWithContents:prior:forList:indentLevel:
[ :item :idx |
priorMorph := self indentingItemClass new
        initWithContents: item
        prior: priorMorph
        forList: self
        indentLevel: newIndent.
firstAddition ifNil: [ firstAddition := priorMorph ].
morphList add: priorMorph.
"Was this row expanded ? if true -> expand it
                        again "
((item hasEquivalentIn: expandedItems) or: [ priorMorph isExpanded ])
        ifTrue: [ priorMorph isExpanded: true.
                priorMorph
                        addChildrenForList: self
                        addingTo: morphList
                        withExpandedItems: expandedItems ] ] in GLMPaginatedMorphTreeMorph(MorphTreeMorph)>>addMorphsTo:from:withExpandedItems:atLevel: in Block: [ :item :idx | ...
OrderedCollection(SequenceableCollection)>>withIndexDo:



.

If it isn’t obvious what is going wrong from the above, I gues the thing to do is reinstall Pharo, and go through the steps of installing the various packages while recording them. If I get the same error, I’ll post the video of what I did  on youtube. If I don’t an error, then it was operator error from the start, obviously.

When it works for others but not yourself, then it seems something is different in the environment.  
One part of that environment is saved "Settings" so try the following experiment....

Presuming you are using Pharo Launcher...
1. Right click Pharo 7.0 64bit (stable), then > Create Image

2. Right-click that new image, then > LAUNCH WITHOUT SETTING
 
3. In Playground, evaluate the following all together...
    Metacello new
         baseline: 'XMLParserHTML';
         repository: 'github://pharo-contributions/XML-XMLParserHTML/src';
         load.
    (#XMLHTMLParser asClass parseURL:  'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference')  inspect.

4. Report whether the error still occurs.

=============

That said, reviewing the method near top of your stack...
XMLHighlightDefaults >> textColorForShoutProperty: aShoutProperty
self haltOnce.
    ^ TextColor color:
        (((SHTextStylerST80 new attributesFor: aShoutProperty)
            detect: [:each | each respondsTo: #color]
            ifNone: [^ nil]) color)

the syntax highlighter indicates that  "SHTextStylerST80"  is an unknown class,
in which scenario your DNU error message is expected when #new is sent to it.

I notice there is a  "SHTextStyler" class.  I'm not sure how this relates to "SHTextStylerST80" 
but have a go at changing #textColorForShoutProperty: to use it,
then again evaluate...
   (#XMLHTMLParser asClass parseURL: 'https://ndb.nal.usda.gov/ndb/search/list?sort=ndb&ds=Standard+Reference')  inspect.  

cheers -ben
12