Aussie John Posted June 25, 2018 Posted June 25, 2018 (edited) I Have custom Function BulletList(Text,BulletChar,Start) which is supposed to add the bullet character at the start of each value. I have been scratching my head all day trying to get it to be recursive. Let([ VC=ValueCount(text); Line=BulletChar & " " & GetValue(text;start) ]; Case(start≤VC;line &¶& BulletList(Line;BulletChar;Start+1);) ) Any pointers would be great. I actually don't want to have the "Start" variable but thought I needed a counter to exit the function and a way to increment the getvalue. Edited June 25, 2018 by Aussie John
OlgerDiekstra Posted June 25, 2018 Posted June 25, 2018 5 hours ago, Aussie John said: Untested, but this might work? It's also late so I might not be thinking right. 😄 Let([ line = GetValue( text; 1 ); newText = Substitute( "!!!" & text & "¶"; "!!!" & line & "¶"; "") ]; If( IsEmpty( newText ); BulletChar & " " & line; BulletList( newText; BulletChar) ) ) The "!!!" in the substitute make the first line unique in case there are duplicate values.
Lee Smith Posted June 25, 2018 Posted June 25, 2018 Hi John, 8 hours ago, Aussie John said: BulletList(Text,BulletChar,Start) Is this a CF you created, or is it posted someplace? Lee
Aussie John Posted June 25, 2018 Author Posted June 25, 2018 5 hours ago, Lee Smith said: Hi John, Is this a CF you created, or is it posted someplace? Lee Hi Lee. This is a CF I am trying to create.
Aussie John Posted June 25, 2018 Author Posted June 25, 2018 (edited) 9 hours ago, OlgerDiekstra said: Let([ line = GetValue( text; 1 ); newText = Substitute( "!!!" & text & "¶"; "!!!" & line & "¶"; "") ]; If( IsEmpty( newText ); BulletChar & " " & line; BulletList( newText; BulletChar) ) ) Thanks Olger - unfortunately this goes into an indefinite loop Edited June 25, 2018 by Aussie John
OlgerDiekstra Posted June 26, 2018 Posted June 26, 2018 6 hours ago, Aussie John said: Thanks Olger - unfortunately this goes into an indefinite loop Nearly got it right. bulletList( text; bulletChar ) Let([ line = GetValue( text; 1 ); textstr = Substitute( text; "¶"; ","); text = Substitute( ¶ & text & ¶; ¶ & line & ¶; ¶ ); text = Middle( text; 2; Length( text ) - 2 ); result = If( IsEmpty( text ); line; bulletList( text; bulletChar ) ) ]; bulletChar & " " & line & ¶ & result ) The last item is duplicated, which I haven't worked out yet, but everything else works. Recursion ain't easy.
Aussie John Posted June 27, 2018 Author Posted June 27, 2018 I think I have cracked it. Let([ Line = GetValue( text; 1 ); VC = ValueCount(text) ]; Case ( VC > 0 ;BulletChar&line & ¶ & BulletList ( RightValues ( text ; VC - 1 ) ;BulletChar) ;) ) Thanks for your help Olger
OlgerDiekstra Posted June 27, 2018 Posted June 27, 2018 Well done. Here's a simpler version, no need for those variables: If( ValueCount( text ) > 0; bulletChar & GetValue( text; 1 ) & ¶ & bulletList( RightValues( text; ValueCount( text ) - 1 ); bulletChar ) ) The only downside is that you do valuecount() twice. (I prefer if statements as opposed to case in instances like these, but it makes no difference really).
Aussie John Posted June 27, 2018 Author Posted June 27, 2018 (edited) thanks - the key is the rightvalues which I saw in a different CF by Comment. I have a numbering CF from the Brian dunning site which I can now simplify too. Edited June 27, 2018 by Aussie John
OlgerDiekstra Posted June 27, 2018 Posted June 27, 2018 Yeah, I was looking for something like rightvalues but couldn't find it. Simplifies it greatly. Here's the numbered list: numberedList( text; counter ) If( ValueCount( text ) > 0; counter & " " & GetValue( text; 1 ) & ¶ & numberedList( RightValues( text; ValueCount( text ) - 1 ); counter + 1 ) ) It's funny how it now all looks so easy. 😄
Recommended Posts
This topic is 2702 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now