<commit_before>@typedef {String} can-stache/expressions/key-lookup KeyLookup Expression
@parent can-stache/expressions

@signature `key`

A [can-stache.key KeyLookup expression] specifies a value in the [can-view-scope scope] or
[can-view-scope.Options HelperOptions scope] that will be looked up.  KeyLookup expressions
can be the entire stache expression like:

```html
{{key}}
```

Or they can makeup the method, helper, arguments and hash value parts of
[can-stache/expressions/call],
[can-stache/expressions/helper], and [can-stache/expressions/hash]s:

```html
{{method(arg1,arg2}}          Call
{{helper arg1 arg2}}          Helper
{{method( prop=hashValue )}}  Hash
```

@signature `CALL_EXPRESSION.key`

Looks up `key` on the return value of `CALL_EXPRESSION`.

```html
{{#each(Todo.getList(complete=completed).value)}}
```

  @param {can-stache/expressions/call} CALL_EXPRESSION A
  call expression that may or may not return a value.

  @param {String} key A property value to look up on
  the result of `CALL_EXPRESSION`.

@body

## Use



The value returned up by a KeyLookup depends on what the [can-stache.key] looks like, and
what expression type the KeyLookup is within.

For example, `{{method(~./key)}}` will call `method` with
a [can-compute.computed compute] that looks up the value of `key` only in the top of the [can-view-scope scope].

The rules are as follows:

 - __[can-stache/expressions/call] arguments__ `{{method(key)}}` - values are passed.
 - __[can-stache/expressions/helper] arguments__ `{{helper key}}` - computes are passed.
 - __hash value in [can-stache/expressions/call]__ `{{method(hash=key)}}` - values are set as property values.
 - __hash value in [can-stache/expressions/helper]__ `{{method hash=key}}` - computes are set as property values.
 - __[can-stache/keys/compute compute operator]__ `{{method(~key)}}` - pass a compute instead of a value.
 - __[can-stache/keys/current current operator]__ `{{./key}}` - only lookup key at the top of the scope.
 - __[can-stache/keys/parent parent operator]__ `{{../key}}` - lookup the value in the parent context.
 - __[can-stache/keys/this context key]__ `{{this}}` - return the current context/top of the scope.

@body

## Default key return values by expression and data types

Keys can have slightly different default behavior depending if they are used in:

 - [can-stache/expressions/helper helper arguments] like: `{{helper some.key}}`

when compared to the other places they are used:

 - [can-stache.tags.escaped insertion tags] like: `{{some.key}}`
 - [can-stache/expressions/call call-expression arguments] like: `{{helper(some.key)}}`
 - [can-stache-bindings.event event bindings] like: `($click)="method(some.key)"`
 - [can-stache-bindings data bindings] like: `{some-attr}="some.key"`

Furthermore keys return different values depending on the data type.

In general:

 - Functions are called to get their return value. (Use the [can-stache/keys/at `@` operator] to prevent this).
 - Keys in helper expression arguments that find observable data return<commit_msg>Update key-lookup.md<commit_after>@typedef {String} can-stache/expressions/key-lookup KeyLookup Expression
@parent can-stache/expressions

@signature `key`

A [can-stache.key KeyLookup expression] specifies a value in the [can-view-scope scope] or
[can-view-scope.Options HelperOptions scope] that will be looked up.  KeyLookup expressions
can be the entire stache expression like:

```html
{{key}}
```

Or they can makeup the method, helper, arguments and hash value parts of
[can-stache/expressions/call],
[can-stache/expressions/helper], and [can-stache/expressions/hash]s:

```html
{{method(arg1,arg2}}          Call
{{helper arg1 arg2}}          Helper
{{method( prop=hashValue )}}  Hash
```

@signature `CALL_EXPRESSION.key`

Looks up `key` on the return value of `CALL_EXPRESSION`.

```html
{{#each(Todo.getList(complete=completed).value)}}
```

  @param {can-stache/expressions/call} CALL_EXPRESSION A
  call expression that may or may not return a value.

  @param {String} key A property value to look up on
  the result of `CALL_EXPRESSION`.

@body

## Use



The value returned up by a KeyLookup depends on what the [can-stache.key] looks like, and
what expression type the KeyLookup is within.

For example, `{{method(~./key)}}` will call `method` with
a [can-compute.computed compute] that looks up the value of `key` only in the top of the [can-view-scope scope].

The rules are as follows:

 - __[can-stache/expressions/call] arguments__ `{{method(key)}}` - values are passed.
 - __[can-stache/expressions/helper] arguments__ `{{helper key}}` - computes are passed.
 - __hash value in [can-stache/expressions/call]__ `{{method(hash=key)}}` - values are set as property values.
 - __hash value in [can-stache/expressions/helper]__ `{{method hash=key}}` - computes are set as property values.
 - __[can-stache/keys/compute compute operator]__ `{{method(~key)}}` - pass a compute instead of a value.
 - __[can-stache/keys/current current operator]__ `{{./key}}` - only lookup key at the top of the scope.
 - __[can-stache/keys/parent parent operator]__ `{{../key}}` - lookup the value in the parent context.
 - __[can-stache/keys/this context key]__ `{{this}}` - return the current context/top of the scope.

@body

## Default key return values by expression and data types

Keys can have slightly different default behavior depending if they are used in:

 - [can-stache/expressions/helper helper arguments] like: `{{helper some.key}}`

when compared to the other places they are used:

 - [can-stache.tags.escaped insertion tags] like: `{{some.key}}`
 - [can-stache/expressions/call call-expression arguments] like: `{{helper(some.key)}}`
 - [can-stache-bindings.event event bindings] like: `($click)="method(some.key)"`
 - [can-stache-bindings data bindings] like: `{some-attr}="some.key"`

Furthermore keys return different values depending on the data type.

In general:

 - Keys in helper expression arguments that find observable data return
{'fraction_non_alphanumeric': 0.12593330014932802, 'fraction_numerical': 0.001327360212377634, 'mean_word_length': 4.401433691756273, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7366284', 'n_tokens_mistral': 1885, 'n_tokens_neox': 1821, 'n_words': 663}