A Beginner's Question
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller
A Beginner's Question
Hi, I am new to this but before I spend a lot of time studying this I thought of asking if want I intend to do is possible. My interest is in apps that can do this. Using repeat loops:
1) search text and retrieve sentences, as in a list of the various findings.
2) edit text, like if a word starts with a certain number to remove that first number and change text style to italic.
There is more but gives you an idea of what I am looking for.
Thanks for any guidance.
— Richard
1) search text and retrieve sentences, as in a list of the various findings.
2) edit text, like if a word starts with a certain number to remove that first number and change text style to italic.
There is more but gives you an idea of what I am looking for.
Thanks for any guidance.
— Richard
Richard Pitcairn, DVM, PhD
-
- VIP Livecode Opensource Backer
- Posts: 9842
- Joined: Sat Apr 08, 2006 7:05 am
- Location: Los Angeles
- Contact:
Re: A Beginner's Question
Good to see you here, Dr. Pitcairn.
Your exercise is a good opportunity to introduce the trueWord chunk type, something new from your experience with SuperCard. Unlike the general xTalk definition of a word, trueWord uses natural language libraries to deliver an understanding of words that take semantic rules and punctuation into account, which is usually what we want for such tasks.
The example below will be good enough for fairly small runs of text (a few hundred words). If you need to work on large blocks of text I'd write this differently, using the field's styledText array. But that can be tricky to get used to when coming from a SuperCard background, so taking things one step at a time we'll make a first pass that builds on the skills you already have, introducing both trueWord and the way LC handles textStyles, with the optional textStyle array.
Like SC, LC allows you to get and set the textStyle of a chunk, but when runs are mixed that can be problematic. The textStyle array gives you control over each style attribute independently, where the array key is a style constant ("bold", "italic", "underline", etc.) and the value is true or false.
This example assumes the number you're looking for is "33", and will delete that and set the rest of the word to italic:
I tested it on this text in a field:
Your exercise is a good opportunity to introduce the trueWord chunk type, something new from your experience with SuperCard. Unlike the general xTalk definition of a word, trueWord uses natural language libraries to deliver an understanding of words that take semantic rules and punctuation into account, which is usually what we want for such tasks.
The example below will be good enough for fairly small runs of text (a few hundred words). If you need to work on large blocks of text I'd write this differently, using the field's styledText array. But that can be tricky to get used to when coming from a SuperCard background, so taking things one step at a time we'll make a first pass that builds on the skills you already have, introducing both trueWord and the way LC handles textStyles, with the optional textStyle array.
Like SC, LC allows you to get and set the textStyle of a chunk, but when runs are mixed that can be problematic. The textStyle array gives you control over each style attribute independently, where the array key is a style constant ("bold", "italic", "underline", etc.) and the value is true or false.
This example assumes the number you're looking for is "33", and will delete that and set the rest of the word to italic:
Code: Select all
on mouseUp
put 33 into tNumToFind
repeat
put truewordOffset(tNumToFind, fld 1) into tOffset
if tOffset = 0 then exit repeat
delete char 1 to len(tNumToFind) of trueword tOffset of fld 1
set the textStyle["italic"] of trueword tOffset of fld 1 to true
end repeat
end mouseUp
Of course I don't know how well that fits the data you're working with (it's just a guess so probably not well at all), but at least it can get you started toward your solution.11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain 11Something 22SomethingElse 33SomethingElseAgain 44AndAgain
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
Re: A Beginner's Question
Richard, thank you for this thoughtful reply. Can you direct me to a user manual or a good place to reference information like this? Like if I wanted to understand trueWord, is there a place, similar to the SC help files, that gives a description of its use and parameters? I did try to access a link "docs" on the livecode web page but it took me instead to an invitation to try it out, and a video about using it. I was hoping to find some user files.
— Richard (2)
— Richard (2)
Richard Pitcairn, DVM, PhD
-
- VIP Livecode Opensource Backer
- Posts: 9670
- Joined: Wed May 06, 2009 2:28 pm
- Location: New York, NY
Re: A Beginner's Question
Richard[2]
Jump in with both feet. I came to LC ten years ago directly from HC (which I still use). You will find LC dreamy.
Craig
Jump in with both feet. I came to LC ten years ago directly from HC (which I still use). You will find LC dreamy.
Craig
-
- VIP Livecode Opensource Backer
- Posts: 9842
- Joined: Sat Apr 08, 2006 7:05 am
- Location: Los Angeles
- Contact:
Re: A Beginner's Question
When I follow the "Docs" link I do see a Trial button if I scroll down far enough, but above that is some intro text and to the left is a menu of topics introducing the platform:rpitcairn wrote: ↑Thu Nov 28, 2019 2:44 amRichard, thank you for this thoughtful reply. Can you direct me to a user manual or a good place to reference information like this? Like if I wanted to understand trueWord, is there a place, similar to the SC help files, that gives a description of its use and parameters? I did try to access a link "docs" on the livecode web page but it took me instead to an invitation to try it out, and a video about using it. I was hoping to find some user files.
Looks like a useful set of introductory info, but the resources I use most often are available right in the LiveCode IDE itself: User Guide and Dictionary.Introduction
Welcome
Introduction For Startups
Introduction For Educators
Lessons
FAQ
Language
Education Curriculum
Deployment
Components
Tooling
Core Concepts
Language Comparison
Extending LiveCode
Whats New?
The User Guide is too comprehensive for most to read in a single sitting, but worth a skim to see what's there and maybe read a section or two on things of interest that are different from what you know from SuperCard, such as "Custom Properties" (p148), "Programming Menus & Menu Bars" (p175), or "Using Arrays" (p409).
The LiveCode Dictionary is quite similar to the SuperTalk Language Guide, handy when you know a term and want to learn more about it.
Most of what you know from SC will work very well in LC, but don't expect complete compatibility. SC has the luxury of supporting only one platform, and when I was learning it coming from SC I ran into many things that seemed "wrong" at first, but over time I came to acknowledge that the ways they differ generally make sense for a product that covers as many platforms as LC does.
And of course you have us here in these forums to answer any questions you may have along the way.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn
Re: A Beginner's Question
Thanks again. I will certainly check out these sources as I have time.
Richard Pitcairn, DVM, PhD
Re: A Beginner's Question
on mouseup
put 2 into tNumToFind
repeat
put truewordOffset (tNumToFind, fld 1) into tOffset
_______________________________
Here is what the help window says about truewordOffset:
Returns the number of truewords between the beginning of a value and an occurrence of a specified string.
How can I understand this in this example I am playing with? It does convert word 2 to italic style. What other words could describe what is happening here?
ars. 2bell. 3 calc.
_______________________________
if tOffset = 0 then exit repeat
delete char 1 to len(tNumToFind) of trueword tOffset of fld 1
_______________________________
Same kind of question here. What does len(tNumToFind) mean? Is it saying “delete the length of what is in the variable tNumToFind? So that if there was a number like “888” it would delete all 3 characters?
_______________________________
set the textStyle["italic"] of trueword tOffset of fld 1 to true
end repeat
end mouseup
put 2 into tNumToFind
repeat
put truewordOffset (tNumToFind, fld 1) into tOffset
_______________________________
Here is what the help window says about truewordOffset:
Returns the number of truewords between the beginning of a value and an occurrence of a specified string.
How can I understand this in this example I am playing with? It does convert word 2 to italic style. What other words could describe what is happening here?
ars. 2bell. 3 calc.
_______________________________
if tOffset = 0 then exit repeat
delete char 1 to len(tNumToFind) of trueword tOffset of fld 1
_______________________________
Same kind of question here. What does len(tNumToFind) mean? Is it saying “delete the length of what is in the variable tNumToFind? So that if there was a number like “888” it would delete all 3 characters?
_______________________________
set the textStyle["italic"] of trueword tOffset of fld 1 to true
end repeat
end mouseup
Richard Pitcairn, DVM, PhD
-
- VIP Livecode Opensource Backer
- Posts: 9670
- Joined: Wed May 06, 2009 2:28 pm
- Location: New York, NY
Re: A Beginner's Question
Richard{2}
Please place handlers in the "</>" space, found just above the editable field. It makes it much easier to read. So like:
Craig
Please place handlers in the "</>" space, found just above the editable field. It makes it much easier to read. So like:
Code: Select all
Please place handlers in the ",/>" space, found just above the editable field. It makes it much easier to read
Re: A Beginner's Question
Did I do this right?
Here is what the help window says about truewordOffset:
"Returns the number of truewords between the beginning of a value and an occurrence of a specified string."
How can I understand this in this example I am playing with? It does convert word 2 to italic style. What other words could describe what is happening here?
ars. 2bell. 3 calc.
Same kind of question here. What does len(tNumToFind) mean? Is it saying “delete the length of what is in the variable tNumToFind? So that if there was a number like “888” it would delete all 3 characters?
Code: Select all
on mouseup
put 2 into tNumToFind
repeat
put truewordOffset (tNumToFind, fld 1) into tOffset
"Returns the number of truewords between the beginning of a value and an occurrence of a specified string."
How can I understand this in this example I am playing with? It does convert word 2 to italic style. What other words could describe what is happening here?
ars. 2bell. 3 calc.
Code: Select all
if tOffset = 0 then exit repeat
delete char 1 to len(tNumToFind) of trueword tOffset of fld 1
Code: Select all
set the textStyle["italic"] of trueword tOffset of fld 1 to true
end repeat
end mouseup
Richard Pitcairn, DVM, PhD
-
- VIP Livecode Opensource Backer
- Posts: 9670
- Joined: Wed May 06, 2009 2:28 pm
- Location: New York, NY
Re: A Beginner's Question
Perfect.
Craig
Craig