MCPcopy Index your code
hub / github.com/Effect-TS/effect / handleProcessFloat

Function handleProcessFloat

packages/cli/src/internal/prompt/number.ts:309–372  ·  view source on GitHub ↗
(options: FloatOptions)

Source from the content-addressed store, hash-verified

307}
308
309function handleProcessFloat(options: FloatOptions) {
310 return (input: Terminal.UserInput, state: State) => {
311 switch (input.key.name) {
312 case "backspace": {
313 return processBackspace(state)
314 }
315 case "k":
316 case "up": {
317 return Effect.succeed(Action.NextFrame({
318 state: {
319 ...state,
320 value: state.value === "" || state.value === "-"
321 ? `${options.incrementBy}`
322 : `${Number.parseFloat(state.value) + options.incrementBy}`,
323 error: Option.none()
324 }
325 }))
326 }
327 case "j":
328 case "down": {
329 return Effect.succeed(Action.NextFrame({
330 state: {
331 ...state,
332 value: state.value === "" || state.value === "-"
333 ? `-${options.decrementBy}`
334 : `${Number.parseFloat(state.value) - options.decrementBy}`,
335 error: Option.none()
336 }
337 }))
338 }
339 case "enter":
340 case "return": {
341 return Effect.matchEffect(parseFloat(state.value), {
342 onFailure: () =>
343 Effect.succeed(Action.NextFrame({
344 state: {
345 ...state,
346 error: Option.some("Must provide a floating point value")
347 }
348 })),
349 onSuccess: (n) =>
350 Effect.flatMap(
351 Effect.sync(() => EffectNumber.round(n, options.precision)),
352 (rounded) =>
353 Effect.match(options.validate(rounded), {
354 onFailure: (error) =>
355 Action.NextFrame({
356 state: {
357 ...state,
358 error: Option.some(error)
359 }
360 }),
361 onSuccess: (value) => Action.Submit({ value })
362 })
363 )
364 })
365 }
366 default: {

Callers 1

floatFunction · 0.85

Calls 4

defaultFloatProcessorFunction · 0.85
syncMethod · 0.80
validateMethod · 0.80
processBackspaceFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…