This workshop will be retired on May 1, 2025.
Heads up! To view this whole video, sign in with your Courses Plus account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Composing Functions in Java!
You have completed Composing Functions in Java!
Preview
Let's make use of the ability to chain methods together.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
[MUSIC]
0:00
Okay, so you just started a new
job at a startup called composure.
0:04
And the concept here is we keep our cool,
it doesn't go away no fear of missing out,
0:08
we keep our cool.
0:12
So the project is like this,
0:14
there's a bunch of fields that users can
fill things out on their profile, right?
0:16
And we started to allow HTML.
0:19
We said it was a bad idea, nobody really
listened, but you know it's a bad idea.
0:22
It started to look a lot
like My Space here.
0:26
The users love it, and
it's moving all over the place though like
0:28
almost every single field has this
concept of they can write their own HTML.
0:31
Not very cool.
0:36
So for an example, here's what happened.
0:37
So, we have some HTML here and
0:38
what we've noticed is that people
like to use the strong tag a lot.
0:41
So what we've done is we've
basically just removed it.
0:44
So I'm gonna go ahead and give this thing
a run so that you can see what happens.
0:46
So what happens, if we've gone
through this little utility here,
0:50
this a bold cleaner means some third party
libraries this is a grandle project.
0:54
So I've been using some third party
libraries adjacent for this one.
0:58
And basically, we get rid of the strong
tags, so see it's not down here.
1:02
See allows you to over promote.
1:05
It's not happening down here, so this will
help our method from this package here.
1:07
Now I'll strip strong tags.
1:11
So, strong was just the first problem that
we're having as we are building this do
1:13
your own HTML sort of thing.
1:17
The next thing that started happening is
people started putting their own links,
1:19
and people ended up
actually leaving the site.
1:22
So, what our design team asked is
if we could add a relic external
1:24
to any link that happens to be in there.
1:29
So let me just show you
what that looks like.
1:30
So, we'll get the result.
1:32
We're gonna take a thing
called externalize links and
1:34
I wanna parse in the results to that,
right.
1:37
So this, Strips the bold, and
1:40
this we'll, Add rel = external.
1:44
So, now you could see when I go and run
this, the link here has this rel external.
1:52
So one thing that we came up with as
a team was we wanted to have a utility
1:58
function that we could just kind
of use all over the place, right?
2:02
Because these fields are showing
up all over the place.
2:06
So in our utilities package,
we have a thing called Renderer.
2:09
And it has a method called render and
it takes input.
2:13
So we're going to take this htmlInput and
you can do things with it.
2:16
So we made it take a function, right?
2:21
Cuz that makes sense, cuz we wanna take
a function that filters those things.
2:23
So, what we did originally
was we just wanted to do,
2:25
both clearly like that, right.
2:28
And we'll go ahead,
let's store this in the result here.
2:30
So that takes care of this
this first one here but
2:36
it doesn't take care of this externalized
links, right, because there's a bunch.
2:38
So what we ended up having to do in
this is kind of gross, is we did this.
2:43
We took the text that was passed in and
we have a little land of body here.
2:47
So now, we have these two things going on.
2:51
So we'll grab the html and
will take the text in, and
2:54
then from here, we will grab
whatever came out of there and
2:59
externalize the links,right?
3:03
And say, let's just do this.
3:10
So return, html right?
3:12
Plus the comments when I went
back into that so here we go.
3:20
Still in the same thing basically right so
it's taken this function and
3:23
it runs a function on it.
3:26
Now this is definitely a step
in the right direction, right?
3:27
But I don't like the fact that
people are going to just copy and
3:30
paste this bit here,right, because we
need to do that every single time.
3:33
So, let's do this.
3:36
Let's look at these functions first.
3:38
So it's a string and it returns a string.
3:40
Each of the functions then here
take a string and return a string.
3:44
Let's play with this a little bit.
3:48
Let's see.
So
3:49
if I have a function and
we make it a string.
3:50
String.
3:55
Let's call this boldCleaner.
3:57
And we can just use
a method reference here.
4:01
So we can say Html:: boldCleaner; so
4:03
that's a function that we
have our handle on there.
4:05
So I'm gonna lose this, let's do this.
4:08
So then, what she want to do is after we
run this, we want to run externalize link.
4:12
So we want to run boldCleaner and
then we want to run externalizeLinks.
4:18
Look at that?
4:26
That is called composing a method, okay.
4:28
So we've composed the two.
4:31
So the first method runs, the results
from it is passed into the next one,
4:33
just like a chain.
4:36
So, as you can see I can
actually highlight this.
4:38
When I go ahead and extract a variable and
it called a filter.
4:42
Let's go ahead,
let's call this sanitizer, okay.
4:49
So there is now a sanitizer,
it does exactly what we wanted.
4:55
Now I can export this and
I can take that wherever I want it, right.
4:58
So that's pretty clean looking there,
isn't it?
5:01
And it's just doing those
little function pipeline there.
5:03
And again, it runs boldCleaner and
then it runs externalizeLinks, and
5:06
it pass a String all the way through.
5:11
So I don't know about you,
but I'm ready for lunch and
5:13
I'm about ready to head out when I see
a new feature request come through.
5:15
We now want to support Markdown.
5:19
Now, if Markdown is new to you,
it's a text format and
5:20
it's used all over the place.
5:24
I see it on GitHub, you'll see it on
a Wikis, different software bug trackers.
5:25
Now, it has a limited scope to HTML and
it's a lot easier to edit.
5:30
Check the teachers notes for more.
5:34
But we wanna do here is, we wanna make
sure that we can render Markdown.
5:36
Let's do that next video.
5:40
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up