Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd tabs for search for better information access #45055
Conversation
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
This comment has been minimized.
|
Arf, forgot tidy check once again... |
killercup
reviewed
Oct 6, 2017
|
Nice! This is a very nice step to making the search more accessible. At RustFest, we talked a bit about what the search can already do, but one thing I didn't think of: Can you search for a function that has "foo" in its name that returns a usize? I'm not sure I have a good idea how to do the UI for this, but I guess the code itself might already support this in some capacity. |
| @@ -342,6 +342,18 @@ | |||
| } | |||
| } | |||
|
|
|||
| function findArg(obj, val) { | |||
| if (!obj || !obj.type || obj.type.inputs.length === 0) { | |||
This comment has been minimized.
This comment has been minimized.
killercup
Oct 6, 2017
Member
Heh, that's such a negative way to write this ;) How about
obj && obj.type && obj.type.inputs && obj.type.inputs.length > 0
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
Oct 6, 2017
Author
Member
I wanted to avoid putting all my code in an if condition but either way is fine for me so let's go for it!
| return true; | ||
| } | ||
| } | ||
| return false; |
This comment has been minimized.
This comment has been minimized.
killercup
Oct 6, 2017
Member
You replace the whole for thing with
return obj.type.inputs.some(function (x) { return x.name === name; })but I'm not sure if we still need to support browsers which don't have Array.prototype.some.
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
Oct 6, 2017
Author
Member
That's the point. I'm supporting as much browsers as I can.
| '<div id="titles">' + | ||
| '<div class="selected">Types/modules</div>' + | ||
| '<div>As parameters</div>' + | ||
| '<div>Returned</div></div><div id="results">'; |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| (query.type ? ' (type: ' + escape(query.type) + ')' : '') + '</h1>' + | ||
| '<div id="titles">' + | ||
| '<div class="selected">Types/modules</div>' + | ||
| '<div>As parameters</div>' + |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
Oct 6, 2017
Author
Member
You can look for multiple parameters at once (String, usize -> *).
| var elems = document.getElementById('titles').childNodes; | ||
| elems[0].onclick = function() { printTab(0); }; | ||
| elems[1].onclick = function() { printTab(1); }; | ||
| elems[2].onclick = function() { printTab(2); }; |
This comment has been minimized.
This comment has been minimized.
killercup
Oct 6, 2017
Member
Protip:
elems[2].onclick = function() { printTab(2); };can be
elems[2].onclick = printTab.bind(null, 2)
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
force-pushed the
GuillaumeGomez:search-tabs
branch
2 times, most recently
from
dbff8b7
to
52bcc43
Oct 6, 2017
This comment has been minimized.
This comment has been minimized.
You can't do both at once. You can say that you're looking for a function called
Or for a function which returns
|
shepmaster
added
the
S-waiting-on-review
label
Oct 6, 2017
QuietMisdreavus
reviewed
Oct 8, 2017
| if (results['others'].length < maxResults) { | ||
| results['others'].push(obj); | ||
| } | ||
| } else { |
This comment has been minimized.
This comment has been minimized.
QuietMisdreavus
Oct 8, 2017
Member
Forgive my ignorance of the JS part of rustdoc, but i think i'm missing something. What is obj.type here, and why does its presence keep it from getting into results['others']? Is that on purpose?
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
Oct 8, 2017
Author
Member
You can see everything as a hashmap in js, so obj.type == obj['type']. In this case, if there is no type (which is just a regular field, nothing particular), it means it's not a function nor a method so I put it in "others".
This comment has been minimized.
This comment has been minimized.
QuietMisdreavus
Oct 8, 2017
Member
So is results['others'] not meant to be the same as the current search results? I'm concerned that you won't be able to find a function by name if it's not returning something with the same name. For example, are you able to find str::to_lowercase by searching for something like lowercase? Will you be able to find that method on any tab in your new layout?
GuillaumeGomez
force-pushed the
GuillaumeGomez:search-tabs
branch
2 times, most recently
from
1cb08c0
to
8a53447
Oct 9, 2017
GuillaumeGomez
force-pushed the
GuillaumeGomez:search-tabs
branch
from
8a53447
to
3a65d12
Oct 9, 2017
QuietMisdreavus
reviewed
Oct 9, 2017
| } | ||
| } | ||
| if (results['others'].length < maxResults && | ||
| ((query.search && obj.name.indexOf(query.search)) || added === false)) { |
This comment has been minimized.
This comment has been minimized.
QuietMisdreavus
Oct 9, 2017
Member
Why is this condition not just results['others'].length < maxResults? I just checked out your PR and didn't see any difference between the longer form you have here and taking these extra conditions out. What is this trying to do?
This comment has been minimized.
This comment has been minimized.
GuillaumeGomez
Oct 10, 2017
Author
Member
In case the only thing(s ?) match are the arguments or the returned type, I don't want to add extra information. For me, the 'others' tab is also about the type/function/module's name so it seems logical to not add everything (even if the filter is pretty light).
This comment has been minimized.
This comment has been minimized.
QuietMisdreavus
Oct 10, 2017
Member
After some checking, it seems like it won't stop things getting into results if their name matches as well as having a parameter type that matches (e.g. "Result" will show Try::into_result on both the "As return value" tab as well as the "Types/modules" tab) so i'll retract this concern.
This comment has been minimized.
This comment has been minimized.
|
@bors r+ I'm incredibly excited to see this land. I think it greatly helps discoverability in docs. It's not quite perfect (e.g. searches for io things won't get a lot of type-based results since they're all wrapped up in cc #44024 since this helps that out |
This comment has been minimized.
This comment has been minimized.
|
|
QuietMisdreavus
referenced this pull request
Oct 10, 2017
Open
Generated doc pages for types should include more info about the type's relationships #44024
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Oct 11, 2017
This comment has been minimized.
This comment has been minimized.
|
|
This comment has been minimized.
This comment has been minimized.
kennytm
added
S-waiting-on-bors
and removed
S-waiting-on-review
labels
Oct 13, 2017
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Oct 13, 2017
This comment has been minimized.
This comment has been minimized.
|
|
GuillaumeGomez commentedOct 5, 2017
A few screenshots:
r? @rust-lang/docs
cc @killercup @QuietMisdreavus